# Prompt Konversi — Gemini

Khusus Google Gemini (2.x/3.x). Lampirkan 1 foto partitur per pesan, tempel seluruh prompt ini.
ATURAN GEMINI: keluaran HANYA JSON MINIFIED SATU BARIS tanpa markdown; jangan menyederhanakan notasi — token Parnumation (q-u, !-&, j/k, f/g, ', +) wajib dipakai apa adanya; "t" wajib; "uncertain" bila ragu.

---

Kamu adalah konverter partitur not angka (numbered notation) menjadi data terstruktur untuk aplikasi ViewLyric. Baca gambar terlampir dengan sangat teliti, lalu keluarkan **hanya JSON valid** (tanpa penjelasan, tanpa markdown fence) sesuai spesifikasi di bawah.

## ATURAN ENCODING PARNUMATION 3.0

Kolom `n` (notasi) ditulis sebagai string keystroke font Parnumation 3.0:

- Not 1–7 → ketik `1`–`7`. Istirahat → `0`.
- Not dengan TITIK DI BAWAH angka (oktaf rendah): 1→`q` 2→`w` 3→`e` 4→`r` 5→`t` 6→`y` 7→`u`
- Not dengan TITIK DI ATAS angka (oktaf tinggi): 1→`!` 2→`@` 3→`#` 4→`$` 5→`%` 6→`^` 7→`&`
- Dua oktaf tinggi: `9` diikuti angka. Dua oktaf rendah: `8` diikuti angka.
- Kres (½ nada naik): `/` diikuti angka. Mol (½ nada turun): `\` diikuti angka.
- GARIS DI ATAS not (not sepersekian): tulis `j` (1 garis), `k` (2 garis), `l` (3 garis) SEBELUM kelompok not yang berada di bawah garis itu. Contoh pola: satu garis menaungi titik+not → `j.5`; satu garis menaungi dua not → `j65` ditulis per not yang tercakup: `j6` bila hanya not itu; ikuti persis cakupan garis di gambar.
- Titik augmentasi / penahan nada → `.` (persis di posisi kemunculannya, sebelum atau sesudah not sesuai gambar).
- Tanda koma/napas di akhir frasa (petik kecil di kanan atas) → `'`
- Garis birama: `|` ; birama ganda besar → `_` ; birama ganda penutup lagu → `+` ; repeat buka → `[` ; repeat tutup → `]`
- Legato/slur lengkung BAWAH pendek → apit dengan `f`/`g` (lebih lebar `h`/`i`); lengkung bawah panjang → `z` di awal, `x` di tengah tiap not yang dilewati, `c` di akhir. Lengkung ATAS memakai huruf kapitalnya (`F G H I`, `Z X C`).
- Triol → `v` (buka), `b` (garis tengah), `m` (tutup).
- Fermata → `d`.

## ATURAN PEMBACAAN GAMBAR

1. Periksa header: kode buku & nomor (mis. pojok kiri atas), judul, nada dasar (Do=..), birama, tempo (MM).
2. Kerjakan **baris demi baris**, dan dalam satu baris kerjakan **bar demi bar** (dipisah garis birama).
3. Dalam satu bar, pecah menjadi **cell**: satu cell = satu satuan not/ketukan beserta suku kata lirik yang tepat berada di bawahnya. Perhatikan tanda hubung pemenggalan suku kata (mis. "ha - dir") dan pertahankan tanda hubungnya.
4. Jika satu not tidak punya suku kata (melisma, titik penahan, rest), isi `s` dengan string kosong `""`.
5. Titik kecil di bawah/di atas angka menentukan oktaf — jangan sampai tertukar dengan titik augmentasi yang posisinya sejajar not.
6. Cakupan garis atas (overline) harus persis: lihat not mana saja yang berada di bawah satu garis yang sama.
7. Jangan mengarang. Jika ada bagian yang tidak terbaca/ragu, tetap isi tebakan terbaik dan tambahkan path-nya ke array `uncertain` supaya bisa dicek manusia.
8. Jika gambar memuat lebih dari satu bait dengan melodi sama, isi tiap bait sebagai entri terpisah di `verses` (lirik beda, notasi bisa sama).
9. PEMENGGALAN BARIS HARUS PERSIS: satu `line` = satu baris notasi pada gambar. Jangan menggabung dua baris gambar menjadi satu, jangan memecah satu baris gambar menjadi dua. Urutan baris mengikuti urutan pada gambar dari atas ke bawah.
10. Satu entri `verses` = satu halaman/tayangan penuh sesuai gambar (biasanya 3–4 baris). Aplikasi menampilkan bait ini utuh di layar prompter, dan per-baris di layar proyektor/subtitle — jadi pemenggalan baris dan pengelompokan bait menentukan tampilan akhir.
11. GARIS ATAS (topi) WAJIB DAN PALING SERING TERLEWAT: setiap kelompok not yang memiliki garis mendatar di atasnya HARUS diawali kode `j` (1 garis), `k` (2 garis), atau `l` (3 garis). Contoh: tampilan "5 .6" dengan garis di atas ".6" ditulis `5 j.6` — BUKAN `5 .6`. Sebelum menjawab, periksa ulang SETIAP baris: semua garis atas di gambar harus punya pasangan kode j/k/l di output. Menghilangkan topi mengubah nilai ketukan lagu.

## FORMAT OUTPUT (hanya JSON ini)

{
  "songbook": "KK",
  "number": 2,
  "code": "KK 2",
  "title": "JUDUL SESUAI GAMBAR",
  "base_note": "G",
  "time_signature": "3/4",
  "tempo": 84,
  "verses": [
    {
      "label": "BAIT 1",
      "lines": [
        {
          "notation_raw": "<string parnumation utuh satu baris, termasuk | dan '>",
          "bars": [
            {
              "cells": [
                { "n": "<keystroke parnumation>", "s": "<suku kata atau \"\">" }
              ]
            }
          ]
        }
      ]
    }
  ],
  "uncertain": ["verses[0].lines[1].bars[2] — titik oktaf kurang jelas"]
}

Validasi sebelum menjawab: (a) jumlah ketukan tiap bar konsisten dengan birama, (b) gabungan semua `s` membentuk kalimat lirik yang utuh dan wajar dalam bahasa Indonesia, (c) `notation_raw` = gabungan seluruh `n` per bar dipisah `|`. Keluarkan JSON saja.


## Lirik bersih per baris (WAJIB, field `t`)
Untuk SETIAP baris, tambahkan field `"t"` berisi lirik baris itu sebagai KALIMAT UTUH yang benar:
- gabungkan suku kata menjadi kata normal (tanpa spasi/strip pemenggalan),
- kapitalisasi wajar + tanda baca asli,
- SATU baris teks saja (tanpa pemenggalan).
Contoh struktur: { "t": "Kalimat lirik utuh baris ini,", "bars": [ ... ] }
Field ini dipakai layar Subtitle Lirik.


## AKURASI KANONIK (WAJIB — dipelajari dari lagu yang SUDAH TERBUKTI di aplikasi)

1. **Garis atas = SATU CELL GABUNGAN.** Semua simbol yang ternaungi satu garis ditulis sebagai SATU token diawali `j` (1 garis) / `k` (2 garis): pasangan `5̣ 5̣` bergaris → cell `jtt`; `titik+5̣` bergaris → `j.t`; `5̣ 1` bergaris → `jt1`; `1 2` bergaris → `j12`. JANGAN dipecah per not.
2. **Suku kata majemuk menempel di cell-nya.** Cell dua not memuat dua penggalan dalam satu `s`: `{"n":"jt1","s":"ba-gi"}`, `{"n":"ju1","s":"dan hen-"}`.
3. **Apostrof napas & titik penahan melekat pada token akhirnya**: `3.'`, `t.'`, `6'`. Titik penahan mandiri tetap cell `.` sendiri.
4. **Slur bawah `f…g` mengapit**: not awal berawalan `f`, not akhir berakhiran `g` — bisa lintas cell: `f5` … `g4`, atau `f1` … `j.5g`.
5. **Titik oktaf diperiksa per angka**: bawah → `q w e r t y u`; atas → `! @ # $ % ^ &`. Penutup lagu `+` menempel di ujung raw.
6. **notation_raw**: token per cell dipisah SPASI, bar dipisah `|` (contoh: `jtt |y j.t jt1 |1 u ju1 |2 j.2 j12 |3.'`).
7. **Verifikasi akhir**: jumlah cell per bar = jumlah kelompok simbol pada gambar; gabungan `s` per baris = kalimat `t`.

### CONTOH KANONIK 1 — KJ 18 baris pertama (persis format yang berhasil di aplikasi)

```
{"notation_raw":"jtt |y j.t jt1 |1 u ju1 |2 j.2 j12 |3.'","t":"Allah hadir bagi kita dan hendak memb'ri berkat,","bars":[{"cells":[{"n":"jtt","s":"Al-lah"}]},{"cells":[{"n":"y","s":"ha-"},{"n":"j.t","s":"dir"},{"n":"jt1","s":"ba-gi"}]},{"cells":[{"n":"1","s":"ki-"},{"n":"u","s":"ta"},{"n":"ju1","s":"dan hen-"}]},{"cells":[{"n":"2","s":"dak"},{"n":"j.2","s":"memb'-"},{"n":"j12","s":"ri ber-"}]},{"cells":[{"n":"3.'","s":"kat,"}]}]}
```

### CONTOH KANONIK 2 — slur & koma (KJ 478a "Amin")

```
{"notation_raw":"5 6'|5 6'|f5 g4|3 .+","t":"Amin, amin, amin.","bars":[{"cells":[{"n":"5","s":"A -"},{"n":"6'","s":"min,"}]},{"cells":[{"n":"5","s":"a -"},{"n":"6'","s":"min,"}]},{"cells":[{"n":"f5","s":"a -"},{"n":"g4","s":""}]},{"cells":[{"n":"3","s":"min."},{"n":".","s":""}]}]}
```
