Notes blessed by the
goddess of knowledge.

Vīṇā turns lectures, meetings, PDFs and field notes into rich, subject-aware study material. Interactive widgets, real-time translation, and active learning that closes your gaps - not a one-size-fits-all summary.

  • Amazing, comprehensive notes
  • Targeted active learning
  • Subject specific widgets
  • Fine-tuned, not hallucinated
vina.studio / fluid-mechanics / lec-09
Fluid Mechanics · Lecture 0947 min · 8,240 words
The Navier–Stokes Equations & Laminar Flow

For an incompressible Newtonian fluid, conservation of momentum is expressed as ρ(∂v/∂t + v·∇v) = −∇p + μ∇²v + f. In steady, fully-developed laminar flow the inertial term vanishes…

Interactive · Poiseuille flow profile
/sim
v(r) = (ΔP / 4μL)(R² − r²)
Re = 1,842
Field note gap. Your handwritten note says Re < 2000 is turbulent - the lecture states Re < 2300 is laminar.
Try /eq Reynolds number for 5 mm pipe, water at 20°C
23:41 / 47:12
Piloting with or at Partner Institutions
Trusted by students from
The note, reimagined

Comprehensive notes you actually understand.

Prose, equations, diagrams, images, audio sync, code, field captures and live studio widgets - composed into one surface. Then bend that surface to how you think. Vīṇā adapts to you, not the other way around.

Course · CS 282Lecture 09
Outline view

How a neural network actually learns.

Prose

Backpropagation is just credit assignment: the chain rule applied across a graph, asking each weight how much to blame.

Equation
∂L/∂wij = ∂L/∂yj · σ′(zj) · xi

Each weight learns from the local slope of its own contribution.

Diagram

Three-layer perceptron - signals flow forward, gradients flow back.

Slide capture
Audio sync
14:2232:08

Tap any line to hear what was said when you wrote it.

Studio widget

Drag to scrub through training epochs.

6 blocks · saved just nowautosaved · v.6.1.1

Click anything. The note above is real layout, not a screenshot - your choices flow through every Vīṇā note in your library.

Unified Home

Every class, every meeting, one dashboard.

Vīṇā plugs into Canvas, Brightspace, Blackboard, WebAssign - plus your email, Slack, and Teams - so subjects, deadlines and threads live together. Then it lets everything talk to one another through global chat.

Subjects
Sources
Canvas
Brightspace
Blackboard
WebAssign
Slack
Teams
This week
· Fluid Mechanics
Problem Set 4 - Bernoulli applicationsDue soon
Canvas · Fluid Mechanics · Tomorrow · 11:59 pm
Lab 03 - pipe viscometry data
Brightspace · Lab · Fri · 5:00 pm
Lecture 10 pre-read - boundary layers
Canvas · Reading · Mon · 9:00 am
1:1 with Prof. Rao
Email · Office hours · Mon · 2:30 pm
Lab safety briefing
Teams · Meeting · Tue · 10 am
Global chat
What actually decides if flow goes turbulent in a pipe?
Reynolds number Re = ρvL/μ.
For your pipe problem (5 mm, water, 20°C), v ≈ 0.37 m/s puts you at Re ≈ 1,850 - laminar. I flagged your note “Re < 2000 is turbulent” as inverted.
Correct the notePoiseuille simPS 4 walk-through
Ask across everything…
Ingestion hub

Every way knowledge enters the room, vina listens in.

Six ways in, and every one of them routes to the same intelligent note surface.

Upload

Lectures, links, PDFs - anything.

Drop in lecture recordings, YouTube or Zoom links, slide decks, textbook PDFs, syllabi. Vīṇā structures it all into a subject-aware note with full citations back to the source.

lec-09-fluid-mech.mp4218 MB
navier-stokes.pdf3.1 MB
youtube.com/watch?v=…-
syllabus-spring-26.pdfjust now
Live record

Live recording with surgical precision.

Capture lectures in the room. We diarize speakers, flag definitions, surface whiteboard frames from your camera - no meeting bots, no permissions to beg for.

Live · speaker: Prof. Rao · 23:41
Silent observer

Meetings without bots in the room.

Zoom, Google Meet, Teams, Webex - Vīṇā observes from your side only. No one sees 'Vīṇā has joined.' No IT tickets. Just clean notes after.

Host
unaware
You
Vīṇā · captured
Guest 1
unaware
Guest 2
unaware
capture
Field notes

Your handwriting, understood.

Snap a photo of your page - or link your tablet. We OCR, parse your diagrams, and layer them into the studio note as first-class, interactive artefacts.

Re < 2000turbulent???gap found
OCR · 97% · 3 tokens
Live translate

Real-time translation HUD.

Sit in a lecture in any language, read it in yours. Terms of art, named entities and equations stay intact - we don't paraphrase what matters.

JA 流体の運動量保存則は…
EN Conservation of momentum for a fluid is…
live · 1/3
Web clip

Every paper, clipped and sourced.

Highlight any passage on an arXiv paper, Wikipedia, a blog, or a course site. Vīṇā clips it, keeps the citation, and folds it straight into your active note.

arxiv.org/abs/2402.07483
"...boundary-layer separation occurs when..."§3.2
Ecosystem

Works where you already live.

Canvas, Brightspace, Blackboard, WebAssign, Zoom, Google Meet, Teams, Webex, Slack, Google Drive, Notion, Outlook, Gmail. Vīṇā sits at the centre and pulls every fragmented platform into one cohesive workspace.

CanvasBrightspaceBlackboardWebAssignZoomGoogle MeetTeamsWebexSlack
Vīṇā
CanvasCanvas
BrightspaceBrightspace
SlackSlack
ZoomZoom
Rich notes

No one-size-fits-all. Water flows to the right shape.

Every subject gets its own interactive widgets. Tap one on the right - the notes on the left re-tune themselves, instantly.

Organic Chemistry · Lecture 11
Nucleophilic substitution: SN1 vs SN2

SN2 proceeds through a single concerted step with a back-side attack, leading to inversion of configuration. SN1 proceeds through a carbocation intermediate and gives a mixture of stereochemistries.

Interactive · Orbital viewers
Chemistry
CBrOH⁻
Walden inversion transition statecited

Source: Clayden, Organic Chemistry, 2nd ed. · p. 332

Searched
Real images only
No hallucinations
Education-tuned
Subject-specific widgets
12+ kinds

Tap one - Vīṇā re-threads the note around it, instantly.

Dual view
Studio notes or a verbatim transcript, whenever you want.

Flip between a structured, widget-rich summary and the raw word of your lecturer. Click any line and jump the audio straight to it.

Active learning

Your handwritten notes, corrected, completed, alive.

Drop your field notes in. Vīṇā compares them to the lecture, shows you what you missed, what you got wrong, and where to pay attention next time. No one else does this.

Field note · 10/14 · notebook scanparsed with OCR
10/14 - Fluid Mech Lec 9Navier–Stokes (simplified):ρ ∂v/∂t = −∇p + μ∇²vLaminar flow:Re < 2000 → turbulent!v(r) - parabolic⚡ missing: boundary condition v(R)=0
Vīṇā's read

3 gaps, 2 misconceptions, 1 beautifully-drawn diagram.

Reynolds threshold is off
correction
You wrote "Re < 2000 turbulent"
Lecture: Re < 2300 is laminar, Re > 4000 turbulent, between is transitional.
You missed the boundary condition
gap filled
Your page jumps from the PDE directly to v(r).
The professor spent 4 minutes on the no-slip condition v(R) = 0. Added to your notes with a timestamp link.
Your Poiseuille sketch - perfect
verified
Beautiful parabolic profile, centerline arrow.
Preserved and linked into the studio note.
9s
avg ingest time per page
97%
handwriting accuracy
1
view to rule them all
Vīṇā's image system
M. TANGI 1.0
M. TANGI 1.0
Logo also generated by M. TANGI 1.0

Generate and receive accurate academic images with Vina's Proprietary Image System M. Tangi 1.0

Built for complex academic and technical visuals, M.Tangi 1.0 generates images that are readable, structured, accurately labelled and actually useful for learning, not just visually impressive.

Designed for diagrams, equations, labels, multilingual scripts, technical explanations, and classroom-ready visuals.

Intelligent Labeling
Context-aware labels for diagrams, processes, and technical visuals.
Reliable Text Rendering
Built to reduce broken text, random artifacts, and hallucinated labels.
Math & Technical Support
Supports equations, symbols, notation, charts, and structured academic content.
Multilingual Visuals
Handles foreign scripts, fonts, and mixed-language academic material.
High-Quality + Fast
Generates polished educational visuals quickly for study workflows.
M. Tangi 1.0 — clean academic diagram
ASTROMTRIC BINRY SYTEMinfered compan1on m@ss via motoin perturbatonUns33n Compan□oninf3rred from perturba—Centr of M@ss (Barycntr)mov3s in a str—ght l1neVisibl3 St@rexhbits astrom—ric w0bbleERR_RENDER_0x4F2B■■■■□□HALLUC_LABELNaNLeg3ndBaryc□nter Pa—Visibl3 Star P@thUns33n Comp—Declinat—
Other AI
M. Tangi 1.0
import torch, torch.nn.functional as F
from tangi.unet import UNet2DConditioned
from tangi.vae import AutoencoderKL
from tangi.clip import CLIPTextEncoder
from tangi.scheduler import DDPMScheduler
enc = CLIPTextEncoder("tangi-clip-L14")
unet = UNet2DConditioned.from_pretrained(
  "m-tangi-v1", torch_dtype=torch.fp16,
  cross_attn_dim=768, layers=24,
  attn_heads=12, ff_mult=4,
).to("cuda")
vae = AutoencoderKL(latent_ch=4, scale=0.18215)
sched = DDPMScheduler(steps=50, beta=(1e-4,0.02))
tok = enc.tokenize("astrometric binary, labeled")
cond = enc(tok).last_hidden_state
latent = torch.randn(1,4,96,72, device="cuda")
for i, t in enumerate(sched.timesteps):
  with torch.cuda.amp.autocast():
    noise_pred = unet(latent, t, cond).sample
    latent = sched.step(noise_pred, t, latent)
x = vae.decode(latent / vae.config.scale_factor)
img = ((x.clamp(-1,1)+1)/2*255).byte()
save_png(img, "diagram.png", dpi=300)
class CrossAttentionBlock(nn.Module):
  def __init__(self, dim, ctx_dim, heads=8):
    super().__init__()
    self.norm1 = nn.LayerNorm(dim)
    self.norm2 = nn.LayerNorm(dim)
    self.attn = nn.MultiheadAttention(dim, heads)
    self.cross = nn.MultiheadAttention(dim, heads)
    self.ff = nn.Sequential(
      nn.Linear(dim, dim*4), nn.GELU(),
      nn.Dropout(0.1), nn.Linear(dim*4, dim))
    self.proj_ctx = nn.Linear(ctx_dim, dim)
  def forward(self, x, ctx, t_emb):
    h = self.norm1(x + t_emb.unsqueeze(1))
    h = self.attn(h, h, h)[0] + x
    ctx_proj = self.proj_ctx(ctx)
    h = self.cross(h, ctx_proj, ctx_proj)[0] + h
    h = self.ff(self.norm2(h)) + h
    scale = torch.sigmoid(self.gate(t_emb))
    return h * scale.unsqueeze(1)
  def _init_weights(self):
    nn.init.zeros_(self.gate.weight)
    nn.init.zeros_(self.ff[-1].weight)
    nn.init.xavier_uniform_(self.proj_ctx.weight)
class LabelPlacementEngine:
  def __init__(self, vocab, font_cfg, collision_r=8):
    self.detector = EntityDetector(vocab, thr=0.72)
    self.font = FontRasterizer(**font_cfg)
    self.col_r = collision_r
    self.grid = SpatialHashGrid(cell=16)
  def place(self, feature_map, layout):
    entities = self.detector(feature_map)
    anchors = self._compute_anchors(entities)
    placed, rejected = [], []
    for ent, anchor in zip(entities, anchors):
      bbox = self.font.measure(ent.text, ent.size)
      candidates = self._radial_candidates(
        anchor, bbox, steps=24, max_r=60)
      best = None
      for c in candidates:
        if not self.grid.collides(c, self.col_r):
          score = self._score(c, anchor, layout)
          if best is None or score > best[1]:
            best = (c, score)
      if best:
        self.grid.insert(best[0])
        leader = self._cubic_leader(anchor, best[0])
        placed.append(Label(ent, best[0], leader))
      else: rejected.append(ent)
    return placed, rejected
def ddpm_sample(unet, sched, cond, cfg_scale=7.5):
  b, device = cond.shape[0], cond.device
  x = torch.randn(b, 4, 96, 72, device=device)
  uncond = torch.zeros_like(cond)
  for i, t in enumerate(sched.timesteps):
    t_batch = t.expand(b).to(device)
    x_in = torch.cat([x, x], dim=0)
    c_in = torch.cat([uncond, cond], dim=0)
    with torch.no_grad():
      eps = unet(x_in, t_batch.repeat(2), c_in)
    eps_u, eps_c = eps.chunk(2)
    eps = eps_u + cfg_scale * (eps_c - eps_u)
    alpha_t = sched.alphas_cumprod[t]
    alpha_prev = sched.alphas_cumprod[t - 1]
    sigma = ((1-alpha_prev)/(1-alpha_t)*(1-alpha_t/alpha_prev)).sqrt()
    pred_x0 = (x - (1-alpha_t).sqrt()*eps) / alpha_t.sqrt()
    pred_x0 = pred_x0.clamp(-1, 1)
    dir_xt = (1 - alpha_prev - sigma**2).sqrt() * eps
    noise = sigma * torch.randn_like(x) if t > 1 else 0
    x = alpha_prev.sqrt()*pred_x0 + dir_xt + noise
    if i % 10 == 0:
      yield x, t.item()
  return x
class VAEDecoder(nn.Module):
  def __init__(self, ch=128, z_ch=4, out_ch=3):
    super().__init__()
    self.conv_in = nn.Conv2d(z_ch, ch*8, 3, pad=1)
    self.mid = nn.Sequential(
      ResBlock(ch*8, ch*8), AttnBlock(ch*8),
      ResBlock(ch*8, ch*8))
    self.up = nn.ModuleList([
      UpBlock(ch*8, ch*8, upsample=True),
      UpBlock(ch*8, ch*4, upsample=True),
      UpBlock(ch*4, ch*2, upsample=True),
      UpBlock(ch*2, ch, upsample=True)])
    self.norm_out = nn.GroupNorm(32, ch)
    self.conv_out = nn.Conv2d(ch, out_ch, 3, pad=1)
  def forward(self, z):
    h = self.conv_in(z)
    h = self.mid(h)
    for block in self.up:
      h = block(h)
    h = F.silu(self.norm_out(h))
    return torch.tanh(self.conv_out(h))
  @torch.inference_mode()
  def decode_latent(self, z, scale=0.18215):
    z = z / scale
    img = self.forward(z)
    return ((img + 1) / 2 * 255).clamp(0, 255).byte()
import torch, torch.nn.functional as F
from tangi.unet import UNet2DConditioned
from tangi.vae import AutoencoderKL
from tangi.clip import CLIPTextEncoder
from tangi.scheduler import DDPMScheduler
enc = CLIPTextEncoder("tangi-clip-L14")
unet = UNet2DConditioned.from_pretrained(
  "m-tangi-v1", torch_dtype=torch.fp16,
  cross_attn_dim=768, layers=24,
  attn_heads=12, ff_mult=4,
).to("cuda")
vae = AutoencoderKL(latent_ch=4, scale=0.18215)
sched = DDPMScheduler(steps=50, beta=(1e-4,0.02))
tok = enc.tokenize("astrometric binary, labeled")
cond = enc(tok).last_hidden_state
latent = torch.randn(1,4,96,72, device="cuda")
for i, t in enumerate(sched.timesteps):
  with torch.cuda.amp.autocast():
    noise_pred = unet(latent, t, cond).sample
    latent = sched.step(noise_pred, t, latent)
x = vae.decode(latent / vae.config.scale_factor)
img = ((x.clamp(-1,1)+1)/2*255).byte()
save_png(img, "diagram.png", dpi=300)
class CrossAttentionBlock(nn.Module):
  def __init__(self, dim, ctx_dim, heads=8):
    super().__init__()
    self.norm1 = nn.LayerNorm(dim)
    self.norm2 = nn.LayerNorm(dim)
    self.attn = nn.MultiheadAttention(dim, heads)
    self.cross = nn.MultiheadAttention(dim, heads)
    self.ff = nn.Sequential(
      nn.Linear(dim, dim*4), nn.GELU(),
      nn.Dropout(0.1), nn.Linear(dim*4, dim))
    self.proj_ctx = nn.Linear(ctx_dim, dim)
  def forward(self, x, ctx, t_emb):
    h = self.norm1(x + t_emb.unsqueeze(1))
    h = self.attn(h, h, h)[0] + x
    ctx_proj = self.proj_ctx(ctx)
    h = self.cross(h, ctx_proj, ctx_proj)[0] + h
    h = self.ff(self.norm2(h)) + h
    scale = torch.sigmoid(self.gate(t_emb))
    return h * scale.unsqueeze(1)
  def _init_weights(self):
    nn.init.zeros_(self.gate.weight)
    nn.init.zeros_(self.ff[-1].weight)
    nn.init.xavier_uniform_(self.proj_ctx.weight)
class LabelPlacementEngine:
  def __init__(self, vocab, font_cfg, collision_r=8):
    self.detector = EntityDetector(vocab, thr=0.72)
    self.font = FontRasterizer(**font_cfg)
    self.col_r = collision_r
    self.grid = SpatialHashGrid(cell=16)
  def place(self, feature_map, layout):
    entities = self.detector(feature_map)
    anchors = self._compute_anchors(entities)
    placed, rejected = [], []
    for ent, anchor in zip(entities, anchors):
      bbox = self.font.measure(ent.text, ent.size)
      candidates = self._radial_candidates(
        anchor, bbox, steps=24, max_r=60)
      best = None
      for c in candidates:
        if not self.grid.collides(c, self.col_r):
          score = self._score(c, anchor, layout)
          if best is None or score > best[1]:
            best = (c, score)
      if best:
        self.grid.insert(best[0])
        leader = self._cubic_leader(anchor, best[0])
        placed.append(Label(ent, best[0], leader))
      else: rejected.append(ent)
    return placed, rejected
def ddpm_sample(unet, sched, cond, cfg_scale=7.5):
  b, device = cond.shape[0], cond.device
  x = torch.randn(b, 4, 96, 72, device=device)
  uncond = torch.zeros_like(cond)
  for i, t in enumerate(sched.timesteps):
    t_batch = t.expand(b).to(device)
    x_in = torch.cat([x, x], dim=0)
    c_in = torch.cat([uncond, cond], dim=0)
    with torch.no_grad():
      eps = unet(x_in, t_batch.repeat(2), c_in)
    eps_u, eps_c = eps.chunk(2)
    eps = eps_u + cfg_scale * (eps_c - eps_u)
    alpha_t = sched.alphas_cumprod[t]
    alpha_prev = sched.alphas_cumprod[t - 1]
    sigma = ((1-alpha_prev)/(1-alpha_t)*(1-alpha_t/alpha_prev)).sqrt()
    pred_x0 = (x - (1-alpha_t).sqrt()*eps) / alpha_t.sqrt()
    pred_x0 = pred_x0.clamp(-1, 1)
    dir_xt = (1 - alpha_prev - sigma**2).sqrt() * eps
    noise = sigma * torch.randn_like(x) if t > 1 else 0
    x = alpha_prev.sqrt()*pred_x0 + dir_xt + noise
    if i % 10 == 0:
      yield x, t.item()
  return x
class VAEDecoder(nn.Module):
  def __init__(self, ch=128, z_ch=4, out_ch=3):
    super().__init__()
    self.conv_in = nn.Conv2d(z_ch, ch*8, 3, pad=1)
    self.mid = nn.Sequential(
      ResBlock(ch*8, ch*8), AttnBlock(ch*8),
      ResBlock(ch*8, ch*8))
    self.up = nn.ModuleList([
      UpBlock(ch*8, ch*8, upsample=True),
      UpBlock(ch*8, ch*4, upsample=True),
      UpBlock(ch*4, ch*2, upsample=True),
      UpBlock(ch*2, ch, upsample=True)])
    self.norm_out = nn.GroupNorm(32, ch)
    self.conv_out = nn.Conv2d(ch, out_ch, 3, pad=1)
  def forward(self, z):
    h = self.conv_in(z)
    h = self.mid(h)
    for block in self.up:
      h = block(h)
    h = F.silu(self.norm_out(h))
    return torch.tanh(self.conv_out(h))
  @torch.inference_mode()
  def decode_latent(self, z, scale=0.18215):
    z = z / scale
    img = self.forward(z)
    return ((img + 1) / 2 * 255).clamp(0, 255).byte()
Natural-language editing

Type like you think. / commands do the rest.

Vīṇā reads your intent. Drop in an equation in English, ask for a real image, spin up an interactive widget, or ask it to go deeper - all without leaving the page.

Vīṇā / notes / lec-11.md

SN2 proceeds through a concerted back-side attack. The key stereochemical consequence is inversion of configuration.

/eqintegral of x² from 0 to 3
∫₀³ x² dx = 9

…and just like that, it's in the note, interactive, and linked back to the lecture timestamp.

Chat with your notes

A tutor, not a cheat sheet. You pick the mode.

Vīṇā defaults to helping you learn - asks leading questions, surfaces your weak spots, cites back to lecture moments. Switch to Answer mode when you need it.

Learning modes
Chat spans everything.

Ask across a single note, a whole subject, or every note in your workspace.

Fluid Mechanics · Socratic mode
cites: lec-09, PS3, textbook p.218
Why does flow stay laminar below Re ≈ 2300?
Great - before I give you a shape, can you tell me: what does Reynolds number physically compare? Two forces. Take a guess.
cite · lec-09 · 23:41
inertial vs viscous?
Exactly right. Now, when viscous forces dominate (Re small), what happens to small perturbations in the flow? Do they grow or get damped out?
cite · textbook · p.218
Ask Vīṇā anything about this note…⌘K
Studio tools

One note. A studio of twelve tools.

Every note becomes an entire study arsenal. Audio, video, flashcards, a deck, a mind map, a debate - generated on demand from the same source of truth.

Audio overview
Two-host podcast about your note.
Teach the AI
You explain it. Vīṇā grades your understanding.
Council briefing
Multiple expert voices debate your topic.
Flash cards
Spaced-repetition, auto-generated.
Mind map
Draggable, editable, branch-anywhere.
Quiz mode
Fill-blanks, T/F, free response, problem sets.
Study guide
Weak-spot aware. Midterm-aware.
Technical glossary
Every term of art, precisely defined.
Grid timeline
Spatial timeline of every concept.
Video generator
A short, narrated explainer.
Presentation builder
Editable deck, ready to ship.
Simulation studio
Spin up any widget from any note.
Teach the AI

The fastest way to learn something is to teach it back.

Vīṇā plays the curious student. You lecture. It interrupts with real questions - the kind you'd hate to get wrong. At the end you get a comprehension score, pinpointed to the exact minute of confusion.

Teaching · Poiseuille flow
Clarity 82%
You
…so because viscous forces dominate, any wobble just dies out, and flow stays smooth.
Vīṇā (student)
Wait - you said "any wobble dies out." At Re = 4,500 would it still die out? I thought above 4,000 it goes turbulent?
Concept gap logged: transition regime11:47
Learn your way

Themed notes that actually work.

Theming isn't a palette swap. The voice, the framing, even the chapter title change to fit the mood you chose - but the equations, figures and numerical values stay bit-for-bit identical. Rigor preserved. Feel dialed.

Or describe any theme…
Pick a theme - the page shifts its voice, but the equations stay bit-for-bit identical.
Chapter 3 · Fluid mechanics
The Navier–Stokes equations & laminar flow

For an incompressible Newtonian fluid, conservation of momentum givesρ(∂v/∂t + v·∇v) = −∇p + μ∇²v + f. In steady laminar flow the inertial term vanishes - the Poiseuille solution falls out directly. The Reynolds number Re = ρvL/μ sets the transition regime; above Re ≈ 2300 disturbances begin to grow nonlinearly.

Figure 3.1 - Velocity profile (parabolic)v(r) = v₀(1 − r²/R²)

Same equations, same numbers, every theme. Only the mood changes.

theme: Academic · math: unchanged
Meeting intelligence

For meetings you run, not ones you sat through.

Virtual or in-person. Vīṇā joins nothing, observes everything. Temperature analysis, attendee identification, interactive decision & task ledgers - and a bridge that sets up your next one.

Q4 Product review · physical + remote · 58 min
Vīṇā studio recap · Oct 15, 10:00 AM
Tone: constructively tense
peak at 22:14 (pricing)
Attendees
PR
Priya Raman
host · in-room · 2,410 words
decisive
JK
Jordan Kim
remote · Zoom · 1,820 words
curious
AM
Ana Morales
in-room · 1,140 words
skeptical
RP
Ravi Patel
remote · Teams · 620 words
supportive
In-room voices identified from audio fingerprint
Decision ledger
Ship free tier with 2h / week ingest cap
Priya14:22
firm
Re-examine enterprise pricing next Friday
Jordan26:51
deferred
Active-learning stays the landing page hero
Ana41:03
firm
Task ledger
Filter: AllMine
Enterprise pricing model v2Fri
JK
Jordan Kim
Whiteboard frame capture demoWed
AM
Ana Moralesblocked
Field-note OCR eval setNext Tue
RP
Ravi Patel
Next meeting bridge
When Q4 review reconvenes Fri 9am, Vīṇā will start by resolving the 2 deferred decisions and 3 unblocked tasks.
Synchronised playback

Audio, transcript and notes - in perfect step.

Scrub the audio. The transcript highlights word-by-word. The studio note scrolls to the exact chunk. Click any word, any paragraph, any diagram and jump straight to the moment.

Studio notes

For steady, fully-developed laminar flow in a circular pipe, the velocity profile is parabolic.

At the wall, viscous no-slip enforces v(R) = 0; at the centre, v attains its maximum.

Reynolds number compares inertial to viscous forces and governs the onset of turbulence.

Verbatim transcript
00:23:00
Prof. RaoFor steady, fully developed laminar flow, the velocity profile is parabolic.
click any word to jumpspeaker-diarized97.4% WER
Exam mode

Three days out. Arm the lockdown.

One flip of the switch. Vīṇā drops every non-essential tool, surfaces only quiz + study guide, and locks you into the exact weak spots you've been avoiding.

Study modeMidterm · T−3 days · 04:17:22
Calm study
You have room to think.

Wander through a podcast version of chapter 7, build a mind map of the reward pathway, or let the AI become your student and see what you actually understand.

Mind map
Branch anywhere
Audio
Two-host deep dive
Teach
AI plays student

Try the switch. Arm it. Disarm it. This is how it feels three days before your midterm.

Real-time collaboration

Think together. In perfect time.

Live cursors, shared highlights, inline comments, and presence. Vīṇā lets a whole research group, study cohort, or editorial desk move as one instrument.

A
M
P

The raga unfolds not as a melody but as a field - an atmosphere the musician inhabits rather than performs.

Each ornamentation is both deliberate and discovered, a conversation between intention and breath.

In this sense, attention itself becomes the instrument - and the listener, a second player whose presence shapes the sound as much as any string.

3 collaborators live
last edit 12s ago
Ananya
Marco
Priya
The connective tissue

Plays well with everything.

Vīṇā reaches into the tools you already use, pulls context in, and stays in sync. One-way, two-way, or archive-only - you decide.

Hover to pause · 13+ native integrations
Plus an open API and a local-first option for sensitive work.
An invocation

Notes blessed by Mata Saraswati.

Vīṇā takes the noise of lectures, readings and half-finished thoughts, and tunes them into something that actually stays with you. Random knowledge becomes melodious knowledge - ordered, resonant, lasting - the way the tunes of the vīṇā linger in the air long after the string is still.

Private beta - Spring 2026

A mind that plays
itself back.

Stop collecting thoughts. Start composing with them. Vīṇā is the second brain that remembers, rehearses, and resonates - a single instrument for everything you think.

Free during beta. Your notes are encrypted end-to-end.