रससिद्धान्त के अनुरूप script-writing software की निर्माणविधि
|
Table of Contents
|
रस-सिद्धान्त भाग ३ : रसाधारित Scriptwriting Software
१. भूमिका
आधुनिक scriptwriting software प्रायः तीन स्तरों पर काम करते हैं — formatting, plot-planning और production-management. वे scene heading, dialogue block, character name, revision, outline, index card, beat board और export format तो देते हैं, पर वे यह नहीं पूछते कि किसी scene में दर्शक के भीतर कौन-सा भाव जागना चाहिए। वे यह भी नहीं बताते कि किसी पात्र के dialogue, silence, gesture, camera-distance, sound-design या editing rhythm से कौन-सा रस पुष्ट होगा और कौन-सा रस नष्ट होगा।
रस-सिद्धान्त पर आधारित scriptwriting software का उद्देश्य केवल screenplay लिखना नहीं है। उसका उद्देश्य है — नाट्य को भाव-विन्यास के रूप में लिखना, जाँचना, सुधारना और production तक ले जाना। ऐसा software writer, director, cinematographer, editor, sound-designer, choreographer और actor को एक ही भाव-व्याकरण पर ला सकता है।
इस software का मूल प्रश्न होगा —
“इस scene में क्या घटता है?” से पहले — “इस scene से दर्शक की चित्तावस्था क्या बननी चाहिए?”
यही इसे सामान्य screenplay software से अलग करेगा। इसका नाम उदाहरणार्थ RasaLekha, NāṭyaSetu, RasaScript, RasaBeat Studio या Nāṭya-Engine रखा जा सकता है। यहाँ नाम गौण है; वास्तविक महत्त्व उसकी रचना-पद्धति का है।
यह software एक साधारण text editor नहीं होगा। यह एक Rasa-aware Dramaturgy Workbench होगा, जिसमें script, rasa-beat, character-bhāva, vibhāva, anubhāva, rasābhāsa, cinematography, editing, sound-design, dance-theatre और AI-aided diagnostics एक साथ कार्य करेंगे।
२. पूर्वपक्ष : सामान्य scriptwriting software की सीमा
Final Draft, Celtx, Fade In, WriterDuet, Scrivener, Highland, StudioBinder जैसे software screenplay formatting और production workflow में उपयोगी हैं। वे industry format संभालते हैं, collaboration देते हैं, character lists बनाते हैं, scene numbers और revisions देते हैं। उनका महत्त्व नकारना उचित नहीं। परन्तु उनकी मूल दृष्टि अधिकतर पश्चिमी dramatic structure पर आधारित रहती है — plot, conflict, act-break, turning point, climax, resolution, character arc आदि।
नाट्यशास्त्रीय दृष्टि से वे अपूर्ण हैं। कारण यह है कि उनके भीतर स्थायीभाव, विभाव, अनुभाव, संचारी भाव, सात्त्विक भाव, रसाभास, रस-सन्धि, चित्तावस्था, सहृदय-अनुभूति जैसी श्रेणियों का कोई मूलभूत स्थान नहीं है। परिणाम यह होता है कि writer scene तो लिखता है, पर scene का भाव-धर्म अस्पष्ट रहता है। Dialogue बढ़ते जाते हैं, पर अनुभाव नहीं बनता। Plot आगे चलता है, पर रस नहीं पकता। Actor को action मिलता है, पर भावभूमि नहीं मिलती। Cinematographer frame बनाता है, पर उसे यह नहीं पता कि frame करुण का है, रौद्र का है, शान्त का है या केवल सुन्दर है।
सामान्य software का दूसरा दोष है कि वे plot-beat को प्रधान मानते हैं, पर rasa-beat का कोई स्वतंत्र मानचित्र नहीं बनाते। जबकि एक ही plot-beat — जैसे पिता का मौन — करुण, रौद्र, शान्त, भयानक या अद्भुत किसी भी दिशा में जा सकता है। Software यदि यह भेद नहीं पकड़ता, तो वह नाट्य की आत्मा को नहीं छूता।
इसलिए आवश्यकता है ऐसे software की जो पूछे —
- scene का principal sthāyibhāva क्या है?
- पात्र का बाहर का भाव और भीतर का भाव अलग हैं या नहीं?
- दर्शक पात्र से अधिक जानता है या कम?
- कौन-सा दृश्य-विभाव भाव को जगाएगा?
- कौन-सा dialogue काटना चाहिए क्योंकि भाव देह, वस्तु या मौन से आ सकता है?
- इस scene के बाद दर्शक की चित्तावस्था क्या होगी?
- अगले scene से इसका भाव-सन्धि कैसे बनेगा?
३. उत्तरपक्ष : रस को software में बाँधने का संकट
दूसरी ओर सावधानी भी आवश्यक है। रस को mechanical checklist में बदलना भी उतना ही घातक है। यदि software कहने लगे कि “close-up = करुण”, “low angle = वीर”, “violin = शोक”, “red light = रौद्र”, तो वह रस-सिद्धान्त का विनाश कर देगा। रस वस्तु, frame, शब्द या ध्वनि में अकेले नहीं रहता। रस सम्बन्ध में सिद्ध होता है — विभाव, अनुभाव, संचारी भाव, स्थायीभाव, प्रसंग, पात्र, दर्शक-संस्कार और भाव-सन्धि के समन्वय में।
AI आधारित system में दूसरा संकट है — रसाभास को रस समझ लेना। AI बड़े विश्वास से यह कह सकता है कि “यह दृश्य करुण है”, क्योंकि उसमें आँसू हैं। पर आँसू करुण का प्रमाण नहीं। यदि शोक का कारण नहीं, देह-सत्य नहीं, मौन नहीं, स्मृति-विभाव नहीं, तो आँसू केवल भावुकता हैं। इसी प्रकार तलवार और युद्ध वीर रस सिद्ध नहीं करते। वीरता के लिए उत्साह, धृति, लक्ष्य, धर्म और कर्तव्यबोध चाहिए।
इसलिए software को गुरु नहीं, सहायक परीक्षक बनाया जाना चाहिए। उसका धर्म होगा —
- writer को प्रश्न देना;
- दोष दिखाना;
- विकल्प देना;
- continuity दिखाना;
- रसाभास की चेतावनी देना;
- production departments को भाव-सूत्र देना;
- पर अन्तिम निर्णय लेखक, निर्देशक और सहृदय कलाकार पर छोड़ना।
४. सन्धि : समाधान का मूल सिद्धान्त
इस software की सर्वोत्तम रचना वही होगी जिसमें तीन स्तर साथ चलें —
१. शास्त्रीय रस-तत्त्व — स्थायीभाव, विभाव, अनुभाव, संचारी, सात्त्विक, रस, रसाभास, रस-सन्धि।
२. आधुनिक scriptcraft — plot, scene, beat, dialogue, subtext, arc, conflict, climax, pacing।
३. AI-सहायित local computing — rule engine, semantic search, local LLM, embeddings, rasa diagnostics, screenplay revision tools।
इसका मूल सूत्र होगा —
Plot घटना का मानचित्र है। Rasa चित्त का मानचित्र है। Software दोनों को एक साथ लिखने और जाँचने का साधन है।
अतः यह software न तो केवल classical commentary होगा, न केवल AI writing toy, न केवल formatting editor। यह एक Rasa-aware Dramaturgy Workbench होगा।
५. निर्माण-दृष्टि : पहले क्या बनाना है और क्या नहीं
इस project को विशाल बनाकर आरम्भ नहीं करना चाहिए। यदि आरम्भ में ही full AI, multi-user collaboration, video generation, ML training, production scheduling, image prompt generation, RAG corpus और all-rasa analytics जोड़ने की चेष्टा करेंगे, तो software अधूरा रह जाएगा।
MVP का धर्म है — छोटा, स्पष्ट, उपयोगी, testable.
MVP में बनाना है
- Project create/open/save.
- Scene editor.
- Scene Rasa Sheet.
- Character Bhāva Matrix.
- Rasa Beat Board.
- Basic Rule Engine.
- HTML / CSV / JSON export.
- Manual correction workflow.
MVP में नहीं बनाना है
- Full vLLM multi-GPU setup.
- ML training.
- Image/video generation.
- Multi-user cloud collaboration.
- Production scheduling.
- All nine rasas का exhaustive automation.
- Automatic final judgement by AI.
आरम्भ में तीन रसों पर कार्य करना अधिक उपयोगी होगा —
१. करुण — क्योंकि इसमें विभाव, मौन, object, absence और अनुभाव की परीक्षा अच्छी होती है।
२. वीर — क्योंकि इसमें action और वास्तविक उत्साह/धृति का भेद स्पष्ट होता है।
३. शान्त — क्योंकि इसमें software को “slow scene” और वास्तविक शान्त रस का भेद समझाना पड़ेगा।
इसके बाद रौद्र, भयानक, शृङ्गार जोड़े जाएँ। अन्त में हास्य, बीभत्स और अद्भुत पर rule-set विस्तृत किया जाए।
६. Hardware-दृष्टि : Z890aiTop + dual RTX 5090 + 256 GB RAM का प्रयोग
Z890aiTop machine इस project के लिए अत्यन्त उपयुक्त है। पर hardware शक्ति का सही उपयोग तभी होगा जब architecture स्पष्ट हो।
६.१ CPU और RAM
256 GB RAM का उपयोग निम्न कार्यों में किया जा सकता है —
- बड़े script projects को memory में रखना।
- अनेक drafts, scene versions और annotations को तेज़ी से compare करना।
- local vector database, embeddings और classical corpus index रखना।
- large context retrieval cache बनाना।
- local LLM server और UI backend को साथ चलाना।
- future में audience-response, scene-analysis और ML training datasets रखना।
- DuckDB/Parquet analytics तेज़ी से चलाना।
- full script audit बिना disk I/O bottleneck के करना।
RAM का अर्थ केवल “large model load” नहीं है। यह software को instant dramaturgical workspace बना सकती है, जहाँ script, corpus, notes, generated variants, diagnostics और export data सब तुरंत उपलब्ध रहें।
६.२ Dual RTX 5090
दो RTX 5090 cards का सर्वोत्तम उपयोग दो प्रकार से किया जा सकता है —
१. Parallel task mode
एक GPU local LLM inference के लिए, दूसरी GPU embeddings, vision-model, image-reference, shot-board या background analysis के लिए।
२. Tensor-parallel LLM mode
किसी बड़े model को दोनों GPUs पर बाँटकर चलाना। इसके लिए vLLM जैसा server उपयोगी हो सकता है।
सावधानी: dual GPUs होने का अर्थ यह नहीं कि हर program स्वतः 64 GB VRAM को एक single memory pool की तरह उपयोग करेगा। अधिकांश cases में model या तो एक GPU पर फिट होना चाहिए, या framework को explicitly multi-GPU parallelism के लिए configure करना होगा।
६.३ Windows और WSL2 का विभाजन
मुख्य desktop Windows 11 Pro पर रहेगा, पर AI backend के लिए WSL2 Ubuntu अधिक उपयोगी हो सकता है, क्योंकि CUDA, Python ML stack, vLLM और कई inference tools Linux वातावरण में अधिक स्थिर चलते हैं।
| Layer | कहाँ चले |
|---|---|
| Main UI | Windows native app / browser UI / Tauri |
| Backend API | Windows Python initially; later WSL2 mirror |
| Heavy LLM inference | WSL2 Ubuntu, vLLM |
| GGUF lightweight inference | Windows llama.cpp या WSL2 llama.cpp |
| Database MVP | Windows path पर SQLite |
| Corpus / vector DB | Windows path या WSL2 path; पर backup अनिवार्य |
| Export to HTML/DOCX/PDF/CSV | Windows side सुविधाजनक |
| VB6 / Kundalee integration | Windows side |
७. Software का मूल लक्ष्य
इस software का लक्ष्य पाँच स्तरों पर परिभाषित होना चाहिए।
७.१ Writer के लिए
- Script लिखना।
- हर scene का rasa-beat बनाना।
- Dialogue को भाव-संरचना से जोड़ना।
- अनावश्यक dialogue काटना।
- Subtext और मौन को चिन्हित करना।
- Character के भीतर और बाहर के भाव अलग रखना।
- Scene aftertaste पहचानना।
- Rasābhāsa चेतावनी पाना।
- Plot-beat और rasa-beat का अन्तर देखना।
- Rewrite से पहले scene-diagnosis पाना।
७.२ Director के लिए
- Scene की चित्तावस्था समझना।
- Actor को स्थायीभाव, छिपे भाव और अनुभाव बताना।
- Blocking को विभाव और अनुभाव से जोड़ना।
- Cinematography, editing, sound और movement departments को एक rasa brief देना।
- Rehearsal में actor को “भाव-कारण” देना, केवल “emotion instruction” नहीं।
- Scene के पहले और बाद की rasa-continuity समझना।
७.३ Cinematographer के लिए
- Scene का लक्ष्य-रस।
- Lens, distance, movement, light, color, focus, geometry पर rasa-notes।
- कौन-सा frame सुन्दर है पर रस-विरोधी हो सकता है।
- कौन-सा shot दृश्य-विभाव या अनुभाव के रूप में आवश्यक है।
- Close-up कब लेना है और कब नहीं।
- Negative space कहाँ भाव-विभाव बनेगा।
- Object-vibhāva को shot-list में कैसे रखना है।
७.४ Editor के लिए
- Cut कहाँ भाव-तरंग पूरी होने पर होना चाहिए।
- Reaction shot कौन-सा अनुभाव है।
- Silence कहाँ न काटना है।
- Montage कौन-से संचारी भावों का क्रम है।
- Rasa-continuity scene से scene तक कैसी है।
- Scene aftertaste को अगले scene तक कैसे ले जाना है।
- कहाँ fast cut rasabhasa पैदा करेगा।
७.५ Sound-designer और Dance-theatre designer के लिए
- कौन-सी ध्वनि विभाव है।
- कौन-सी ध्वनि अनुभाव है।
- कौन-सी ध्वनि संचारी भाव का संकेत है।
- Silence कहाँ मुख्य नाद है।
- Movement phrase का भाव-कार्य क्या है।
- Group movement समाज, स्मृति, नियति या cosmic pattern है या केवल choreography।
- शान्त को movement के अभाव से नहीं, movement के विलय से कैसे दिखाना है।
८. Module-विभाजन
Software का नाम उदाहरणार्थ RasaLekha Studio रखा जा सकता है।
Tagline: Scriptwriting, Rasa-Diagnostics and Nāṭya Production Workbench.
मुख्य modules —
१. Project Manager
२. Script Editor
३. Rasa Beat Designer
४. Character Bhāva Matrix
५. Scene Rasa Sheet
६. Dialogue and Subtext Analyzer
७. Vibhāva-Anubhāva Mapper
८. Rasa Continuity Graph
९. Cinematography Rasa Planner
१०. Editing Rasa Planner
११. Sound-design Rasa Planner
१२. Dance-theatre Movement Planner
१३. Rasābhāsa Detector
१४. Rule Engine
१५. AI Dramaturgy Assistant
१६. Corpus-RAG Module
१७. Prompt Template Manager
१८. Export Engine
१९. Revision and Version Control
२०. Dataset / ML Export Module
२१. VB6 / JSON / CSV Integration Bridge
२२. Backup and Restore Manager
Module design rule: हर module के लिए purpose, input, output, database tables, API endpoints, UI screens, validation rules और error cases लिखे जाएँ। बिना module contract के software coding आरम्भ नहीं करनी चाहिए।
९. Data Model : Software की आत्मा
Software की शक्ति उसके data model से तय होगी। यदि data model केवल scene और dialogue तक सीमित है, तो software साधारण रहेगा। यदि data model रस-तत्त्वों को मूल इकाई बनाएगा, तो software नाट्यशास्त्रीय बनेगा।
मुख्य entities —
| Entity | अर्थ |
|---|---|
| Project | पूरी film, series, play, dance-theatre या nāṭya project |
| WorkUnit | Film, episode, act, sequence, scene आदि का hierarchical unit |
| Scene | कथा और भाव की प्रमुख इकाई |
| Beat | plot-beat या rasa-beat |
| Character | पात्र |
| CharacterState | किसी scene में पात्र की भावस्थिति |
| RasaAnnotation | स्थायीभाव, लक्ष्य-रस, गौण रस, रसाभास risk |
| Vibhava | आलम्बन और उद्दीपन विभाव |
| Anubhava | देह, वाणी, gesture, silence, reaction |
| SanchariBhava | क्षणिक भाव-गति |
| SattvikaBhava | स्तम्भ, अश्रु, वेपथु, स्वरभंग आदि |
| DialogueLine | dialogue और subtext |
| VisualCue | camera, frame, prop, light, color |
| EditCue | cut, hold, reaction, montage, transition |
| SoundCue | ambience, breath, silence, motif, music, offscreen sound |
| MovementPhrase | dance-theatre phrase |
| RasaTransition | एक रस से दूसरे रस की यात्रा |
| RuleDefinition | deterministic rule-engine का rule |
| RuleFinding | rule-engine की finding |
| AIObservation | AI द्वारा दी गई टिप्पणी |
| UserCorrection | user ने AI/rule को सुधारा या अस्वीकार किया |
| PromptTemplate | AI prompt का controlled template |
| CorpusDocument | शास्त्रीय या आधुनिक corpus का document |
| CorpusChunk | retrieval के लिए corpus का छोटा अंश |
| Revision | draft history |
| ExportProfile | screenplay, director notes, department sheets, CSV, JSON |
१०. Rasa Ontology
Software में rasa को केवल string label की तरह न रखा जाए। एक ontology बनानी चाहिए।
| Rasa | स्थायीभाव | सामान्य संकेत |
|---|---|---|
| शृङ्गार | रति | प्रेम, आकर्षण, लज्जा, संयोग-वियोग |
| हास्य | हास | असंगति, विनोद, चेष्टा-विरोध |
| करुण | शोक | वियोग, मृत्यु, दैन्य, असहायता |
| रौद्र | क्रोध | अन्याय, अपमान, प्रतिकार, दाह |
| वीर | उत्साह | धृति, संकल्प, कर्म, धर्म, साहस |
| भयानक | भय | अज्ञात, संकट, असुरक्षा, प्रतीक्षा |
| बीभत्स | जुगुप्सा | घृणा, पतन, विकृति, अस्वच्छता, नैतिक विघटन |
| अद्भुत | विस्मय | विराट्, अप्रत्याशित, दैवी, रहस्योद्घाटन |
| शान्त | शम / निर्वेद | वैराग्य, स्वीकार, स्थिरता, विलय |
भाव-तत्त्वों का software mapping —
| तत्त्व | Software field |
|---|---|
| स्थायीभाव | primary_sthayi_bhava |
| गौण स्थायीभाव | secondary_sthayi_bhava |
| लक्ष्य-रस | target_rasa |
| वर्तमान रस | current_rasa |
| अपेक्षित aftertaste | intended_aftertaste |
| आलम्बन विभाव | alambana_vibhavas[] |
| उद्दीपन विभाव | uddipana_vibhavas[] |
| अनुभाव | anubhavas[] |
| संचारी भाव | sanchari_sequence[] |
| सात्त्विक भाव | sattvika_markers[] |
| रसाभास | rasabhasa_risks[] |
| भाव-सन्धि | rasa_transition |
११. Scene Rasa Sheet : हर scene का अनिवार्य रूप
Software में हर scene के साथ rasa sheet खुलनी चाहिए। Writer चाहे तो इसे पहले भरे, बाद में भरे, या AI से initial draft बनवाकर सुधारे।
| Field | प्रश्न |
|---|---|
| Scene ID | यह scene कहाँ है? |
| Plot event | बाहर क्या घटता है? |
| Dramatic function | कथा में इसका कार्य क्या है? |
| Primary sthāyibhāva | मूल भाव क्या है? |
| Target rasa | दर्शक को किस रस की ओर ले जाना है? |
| Secondary rasa | कौन-सा गौण रस आएगा? |
| Character known emotion | पात्र स्वयं कौन-सा भाव जानता है? |
| Hidden emotion | पात्र कौन-सा भाव छिपा रहा है? |
| Audience knowledge | दर्शक पात्र से अधिक जानता है या कम? |
| Ālambana vibhāva | भाव का मुख्य व्यक्ति/वस्तु कौन है? |
| Uddīpana vibhāva | कौन-सा वातावरण, वस्तु, ध्वनि, प्रकाश भाव जगाएगा? |
| Main anubhāva | भाव देह में कैसे प्रकट होगा? |
| Sanchari chain | कौन-कौन से क्षणिक भाव स्थायीभाव को पुष्ट करेंगे? |
| Sattvika possibility | क्या अश्रु, स्तम्भ, स्वरभंग आदि उचित हैं? |
| Dialogue economy | कौन-सा dialogue काटा जा सकता है? |
| Silence point | कौन-सा मौन आवश्यक है? |
| Object-vibhāva | कौन-सी वस्तु भाववाहक है? |
| Cinematography note | camera कैसे देखे? |
| Editing note | कहाँ ठहरना, कहाँ cut करना? |
| Sound note | कौन-सी ध्वनि भाव-सूत्र है? |
| Movement note | यदि dance-theatre है, तो movement phrase क्या है? |
| Entry chitta-state | scene शुरू में दर्शक की चित्तावस्था |
| Exit chitta-state | scene अंत में दर्शक की चित्तावस्था |
| Next scene link | अगला scene इस भाव को कैसे ग्रहण करेगा? |
Practical UI rule: Scene save करते समय target_rasa, primary_sthayi_bhava, plot_event और exit_chitta_state खाली न रहें। Draft mode में खाली रह सकते हैं; production-ready mode में warning आए।
१२. Rasa-beat Structure
हर scene में दो parallel structures होंगे —
१. Plot Beat — घटना का क्रम।
२. Rasa Beat — भाव का क्रम।
उदाहरण —
| Plot beat | Rasa beat |
|---|---|
| पुत्र द्वार पर आता है | आशा + स्मृति |
| पिता उसे देखता है | दबा हुआ शोक |
| पिता बोलता नहीं | करुण की भूमि |
| पुत्र चरण छूना चाहता है | दैन्य + लज्जा |
| पिता हाथ रोक देता है | रौद्र की छाया |
| पुरानी वस्तु दिखती है | स्मृति-विभाव |
| पिता अकेले रोता है | करुण सिद्धि |
Software में plot beat और rasa beat अलग-अलग columns में दिखने चाहिए। यदि plot आगे बढ़ रहा है पर rasa stagnate है, software चेतावनी दे। यदि rasa बदल रहा है पर plot में कोई नाट्यगत आधार नहीं, software पूछे — “क्या यह भाव परिवर्तन अर्जित है?”
Rasa Beat Board के fields —
| Field | उपयोग |
|---|---|
| beat_order | scene के भीतर क्रम |
| plot_beat | घटना |
| rasa_beat | भाव-गति |
| character_focus | किस पात्र पर भाव केन्द्रित है |
| vibhava_used | कौन-सा विभाव |
| anubhava_used | कौन-सा अनुभाव |
| sanchari_bhava | क्षणिक भाव |
| cut_or_hold_note | editing note |
| dialogue_note | बोलना है या मौन रखना है |
| next_beat_link | अगले beat से भाव-सन्धि |
१३. Character Bhāva Matrix
हर पात्र का एक स्थिर profile और scene-by-scene changing profile होना चाहिए।
१३.१ स्थिर character profile
| Field | अर्थ |
|---|---|
| Character name | पात्र का नाम |
| Dramatic role | नायक, विरोधी, गुरु, सखी, पिता, जनसमूह आदि |
| Dominant life-bhava | उसके जीवन का मूल भाव |
| Desire | वह क्या चाहता है? |
| Fear | वह किससे डरता है? |
| Shame point | उसकी लज्जा क्या है? |
| Anger point | उसका क्रोध कहाँ जागता है? |
| Love object | उसका आलम्बन कौन है? |
| Dharma conflict | उसका धर्म-संघर्ष क्या है? |
| Rasa potential | वह किन रसों का प्रधान वाहक है? |
| Voice tendency | स्वर कैसा है? |
| Body tendency | देह-भाषा कैसी है? |
| Silence tendency | उसका मौन किस अर्थ में आता है? |
१३.२ Scene-specific character state
| Field | अर्थ |
|---|---|
| Scene ID | दृश्य |
| Outer emotion | बाहर दिखने वाला भाव |
| Inner emotion | भीतर का भाव |
| Hidden emotion | छिपा हुआ भाव |
| Spoken intention | वह क्या कह रहा है? |
| True intention | वह वास्तव में क्या चाहता है? |
| Body anubhāva | देह क्या बता रही है? |
| Voice anubhāva | स्वर क्या बता रहा है? |
| Silence meaning | मौन का अर्थ क्या है? |
| Rasa contribution | यह पात्र scene के target-rasa में क्या दे रहा है? |
इस matrix से actor और director को real benefit मिलेगा। Actor को “दुखी हो” कहने से अच्छा है — “बाहर से स्थिर, भीतर शोक, पिता के सामने अपराधबोध, पर पुत्र के सामने कठोरता।”
१४. Rasābhāsa Detector
Software का सबसे महत्त्वपूर्ण module होगा — Rasābhāsa Detector। यह अंतिम सत्य नहीं देगा, पर संभावित दोष दिखाएगा।
सामान्य रसाभास —
| दोष | संकेत |
|---|---|
| भाव का कारण अस्पष्ट | पात्र रो रहा है पर शोक-विभाव नहीं |
| अनुभाव असंगत | dialogue करुण है पर देह रौद्र है, बिना उद्देश्य |
| अति-संगीत | करुण forced melodrama बन रहा है |
| अति-dialogue | भाव शब्दों में बोल दिया गया |
| स्थायीभाव अस्पष्ट | scene में बहुत भाव हैं, पर प्रधान कोई नहीं |
| rasāntara बिना सन्धि | करुण से हास्य अचानक, बिना भाव-पुल |
| सात्त्विक भाव का अति-प्रयोग | हर scene में आँसू या कम्पन |
| विभाव-विरोध | दृश्य-वातावरण target-rasa से मेल नहीं खाता |
| सुंदरता-विरोध | अत्यधिक सुन्दर frame करुण/बीभत्स को कमजोर कर रहा है |
| वीराभास | action है पर धृति/धर्म/संकल्प नहीं |
| करुणाभास | दुख का प्रदर्शन है पर दर्शक को अनुभव नहीं मिलता |
| शृङ्गाराभास | आकर्षण है पर लज्जा, संकेत, दृष्टि और भाव-सूक्ष्मता नहीं |
| शान्ताभास | धीमा दृश्य है पर वैराग्य/शम नहीं; केवल जड़ता |
१४.१ Rule output format
हर rasābhāsa finding इस format में stored हो —
{
"finding_id": "RF-0001",
"scene_id": "S001",
"severity": "high",
"category": "karunabhasa",
"intended_rasa": "करुण",
"conflicting_element": "direct_emotional_dialogue",
"message": "भाव सीधे बोला गया है, पर करुण रस के लिए विभाव और अनुभाव अधिक आवश्यक हैं।",
"recommendation": "dialogue घटाएँ; खाली आसन, अछूता थाल, दृष्टि न मिलाना, टूटी साँस जैसे अनुभाव जोड़ें।",
"false_positive_exception": "यदि style intentionally melodramatic है, user override कर सकता है।",
"created_at": "2026-04-30T00:00:00"
}१५. Rule Engine और AI Engine का सम्बन्ध
Software में दो अलग engines होने चाहिए।
१५.१ Deterministic Rule Engine
यह शास्त्रीय और practical rules पर चलेगा। यह तेज, repeatable और explainable होगा।
उदाहरण rules —
- Scene में target-rasa blank न रहे।
- Primary sthāyibhāva और target-rasa का सम्बन्ध valid हो।
- करुण scene में कम से कम एक आलम्बन या अनुपस्थिति-विभाव होना चाहिए।
- रौद्र scene में क्रोध का कारण होना चाहिए।
- भयानक scene में unseen/offscreen/suspense element होना चाहिए या उसका अभाव justified हो।
- शान्त scene में excessive conflict और fast rhythm warning दे।
- हर major emotional scene में कम से कम एक अनुभाव हो।
- Dialogue lines में direct emotion declaration अधिक हो तो warning।
- Consecutive scenes में rasa shift हो तो transition note माँगे।
- Climax से पहले target-rasa की तैयारी के beats हों।
१५.२ AI Dramaturgy Engine
AI का काम होगा —
- Scene पढ़ना।
- संभावित स्थायीभाव सुझाना।
- missing vibhāva/anubhāva दिखाना।
- dialogue trimming का सुझाव देना।
- alternative scene versions बनाना।
- cinematography/editing/sound notes बनाना।
- rasa continuity graph पर टिप्पणी देना।
- classical corpus से relevant rasa principles लाना।
- writer को प्रश्न देना।
AI को कभी भी final judge न बनाया जाए। उसकी हर output editable और rejectable हो।
सावधानी: AI suggestion को database में accepted तभी मानें जब user उसे accept करे। Default state = pending.
१६. Local AI Architecture
Desktop पर तीन AI modes रखने चाहिए।
१६.१ Fast local assistant mode
उद्देश्य —
- छोटे scene पर तुरन्त notes।
- dialogue rewrite।
- rasa-sheet fill।
- summaries।
- outline work।
Implementation —
- llama.cpp / Ollama / LM Studio class का local GGUF model।
- एक GPU या CPU+GPU offload।
- Windows पर भी चल सकता है।
- सरल, stable, कम maintenance।
१६.२ Heavy dramaturgy mode
उद्देश्य —
- बड़े context में full sequence analysis।
- कई scenes का rasa continuity।
- long screenplay reasoning।
- classical corpus retrieval के साथ विवेचन।
Implementation —
- WSL2 Ubuntu।
- vLLM server।
- dual GPU tensor parallel।
- OpenAI-compatible local API।
- FastAPI backend से call।
१६.३ Specialized analyzers
ये छोटे models/rule systems होंगे —
- Embedding model for semantic search।
- Classification model for rasa tags।
- Dialogue directness detector।
- Shot/sound/movement cue detector।
- Rasabhasa risk model।
- Revision comparison model।
ये GPU पर भी चल सकते हैं, पर CPU/RAM में भी पर्याप्त तेज हो सकते हैं।
१७. RAG Corpus Module
Software में classical और modern corpus का searchable module होना चाहिए।
आरम्भ में corpus में रखें —
- नाट्यशास्त्र के rasa sections।
- अभिनवभारती से चयनित अंश।
- दशरूपक।
- साहित्यदर्पण।
- रसगङ्गाधर।
- ध्वन्यालोक।
- Rasa Siddhanta Part-1, Part-2 और Part-3 notes।
- own scene examples।
- classical Sanskrit drama excerpts।
- modern cinema examples manually tagged।
- dance, cinematography, editing, sound और movement notes।
Corpus का काम यह होगा कि AI केवल model-memory से न बोले। वह corpus से relevant अंश खोजे और फिर टिप्पणी दे। इससे hallucination घटेगा और शास्त्रसम्मतता बढ़ेगी।
Corpus chunk fields —
| Field | अर्थ |
|---|---|
| source_title | ग्रन्थ / लेख / note |
| passage_text | मूल पाठ |
| translation | यदि हो |
| rasa_tags | शृङ्गार, करुण आदि |
| bhava_tags | स्थायी, संचारी, अनुभाव आदि |
| use_case | script, acting, camera, sound, editing |
| authority_level | primary, commentary, modern note, example |
| language | Sanskrit, Hindi, English |
| reliability_note | किस सीमा तक उपयोग करना है |
१८. Database चयन
तीन practical विकल्प हैं।
१८.१ SQLite + JSON
MVP के लिए सबसे सरल।
लाभ —
- single file database।
- backup आसान।
- Python, C++, VB.NET, C# सब पढ़ सकते हैं।
- portable।
- local-first privacy।
सीमा —
- बहुत बड़े collaboration और multi-user workflows में सीमित।
१८.२ PostgreSQL
Production-level के लिए उत्तम।
लाभ —
- मजबूत relational integrity।
- JSONB fields।
- full-text search।
- multi-user।
- future server deployment।
सीमा —
- setup थोड़ा भारी।
१८.३ DuckDB + Parquet
Analysis और ML export के लिए उत्तम।
लाभ —
- large datasets पर तेज।
- CSV/Parquet handling अच्छा।
- local analytical queries।
सिफारिश
- MVP: SQLite + JSON files.
- Production: PostgreSQL + vector database.
- Research/ML: DuckDB/Parquet export.
१९. Suggested Folder Structure
Windows side:
D:\RasaLekha\
projects\
exports\
corpora\
models\
backups\
logs\
tools\
ui\
backend\
docs\
tests\WSL side:
~/rasalekha/
backend/
ai_server/
embeddings/
vector_db/
scripts/
logs/Project folder:
ProjectName/
project.rasa.json
rasalekha.db
script/
draft_001.rscript.json
draft_002.rscript.json
scenes/
scene_001.json
scene_002.json
annotations/
exports/
screenplay.html
screenplay.fdx
director_notes.html
rasa_sheets.csv
rasa_sheets.xlsx
wikidot.txt
assets/
references/
sound/
images/
backups/Backend project structure:
backend/
app/
main.py
config.py
db.py
models.py
schemas.py
services/
project_service.py
scene_service.py
export_service.py
rules/
base.py
common_rules.py
karuna_rules.py
vira_rules.py
shanta_rules.py
raudra_rules.py
bhayanaka_rules.py
shringara_rules.py
ai/
llm_gateway.py
prompts.py
rag.py
embeddings.py
exports/
wikidot_export.py
html_export.py
csv_export.py
json_export.py
tests/
test_rules.py
test_scene_schema.py
test_exports.py
requirements.txt
run_backend.batFrontend project structure:
ui/
package.json
src/
App.jsx
api.js
components/
ProjectDashboard.jsx
ScriptEditor.jsx
RasaPanel.jsx
RuleFindings.jsx
CharacterMatrix.jsx
RasaBeatBoard.jsx
RasaGraph.jsx
ExportPanel.jsx
styles/
main.css२०. JSON Scene Format
हर scene internally JSON में रखा जा सकता है। उदाहरण —
{
"scene_id": "S001",
"project_id": "P001",
"scene_number": 1,
"title": "पुत्र का लौटना",
"location": "आँगन",
"time": "संध्या",
"plot_event": "पुत्र वर्षों बाद घर लौटता है; पिता मौन रहता है।",
"primary_sthayi_bhava": "शोक",
"target_rasa": "करुण",
"secondary_rasa": ["रौद्र-छाया"],
"entry_chitta_state": "प्रतीक्षा",
"exit_chitta_state": "मूक करुणा",
"characters": [
{
"name": "पिता",
"outer_emotion": "स्थिरता",
"inner_emotion": "शोक",
"hidden_emotion": "क्रोध",
"anubhavas": ["दृष्टि न मिलाना", "अछूते थाल पर हाथ रुकना", "टूटी साँस"]
},
{
"name": "पुत्र",
"outer_emotion": "लज्जा",
"inner_emotion": "भय और आशा",
"hidden_emotion": "अपराधबोध",
"anubhavas": ["धीमा कदम", "अधूरा प्रणाम", "रुकती वाणी"]
}
],
"vibhavas": {
"alambana": ["पुत्र", "मृत छोटे पुत्र की स्मृति"],
"uddipana": ["खाली आसन", "अछूता थाल", "संध्या-प्रकाश", "मौन आँगन"]
},
"sanchari_sequence": ["स्मृति", "लज्जा", "दैन्य", "दबा हुआ रोष", "शोक"],
"sattvika_markers": ["स्वरभंग सम्भावित", "अश्रु नहीं दिखाना, केवल आँख की नमी"],
"dialogue_policy": {
"avoid": ["मैं बहुत दुखी हूँ", "तुमने मुझे तोड़ दिया"],
"prefer": ["अधूरा वाक्य", "मौन", "वस्तु-स्पर्श"]
},
"cinematography": {
"distance": "medium to close, close-up delayed",
"light": "soft low contrast",
"frame": "negative space with empty seat"
},
"editing": {
"rhythm": "slow",
"must_hold": ["खाली आसन", "पिता की टूटी साँस"],
"avoid": ["fast cut after son's line"]
},
"sound": {
"ambience": "सूना room tone",
"key_sound": "अछूते थाल की हल्की ध्वनि",
"silence_points": ["पुत्र के 'मैं लौट आया' के बाद"]
},
"ai_notes": [],
"rule_findings": [],
"user_overrides": []
}२१. JSON Schema का आरम्भिक रूप
Sample JSON पर्याप्त नहीं। Validation के लिए schema चाहिए।
`scene.schema.json` का आरम्भिक रूप —
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RasaLekha Scene",
"type": "object",
"required": [
"scene_id",
"project_id",
"scene_number",
"plot_event",
"primary_sthayi_bhava",
"target_rasa",
"entry_chitta_state",
"exit_chitta_state"
],
"properties": {
"scene_id": { "type": "string" },
"project_id": { "type": "string" },
"scene_number": { "type": "integer", "minimum": 1 },
"title": { "type": "string" },
"location": { "type": "string" },
"time": { "type": "string" },
"plot_event": { "type": "string", "minLength": 1 },
"primary_sthayi_bhava": {
"type": "string",
"enum": ["रति", "हास", "शोक", "क्रोध", "उत्साह", "भय", "जुगुप्सा", "विस्मय", "शम", "निर्वेद"]
},
"target_rasa": {
"type": "string",
"enum": ["शृङ्गार", "हास्य", "करुण", "रौद्र", "वीर", "भयानक", "बीभत्स", "अद्भुत", "शान्त"]
},
"secondary_rasa": {
"type": "array",
"items": { "type": "string" }
},
"entry_chitta_state": { "type": "string" },
"exit_chitta_state": { "type": "string" }
}
}इस schema को Python backend में validation के लिए उपयोग किया जा सकता है। Production-ready mode में missing required fields पर warning नहीं, error देना चाहिए।
२२. SQL Schema : MVP से Production तक
MVP में SQLite पर्याप्त है। पर schema ऐसा हो कि आगे PostgreSQL में ले जाना आसान रहे।
PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS projects ( project_id TEXT PRIMARY KEY, title TEXT NOT NULL, author TEXT, language TEXT DEFAULT 'hi-en', dominant_rasa TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, metadata_json TEXT ); CREATE TABLE IF NOT EXISTS scenes ( scene_id TEXT PRIMARY KEY, project_id TEXT NOT NULL, scene_number INTEGER NOT NULL, title TEXT, location TEXT, time_of_day TEXT, plot_event TEXT NOT NULL, script_text TEXT, primary_sthayi_bhava TEXT, target_rasa TEXT, secondary_rasa_json TEXT, entry_chitta_state TEXT, exit_chitta_state TEXT, scene_json TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(project_id) ); CREATE INDEX IF NOT EXISTS idx_scenes_project ON scenes(project_id); CREATE INDEX IF NOT EXISTS idx_scenes_rasa ON scenes(target_rasa); CREATE INDEX IF NOT EXISTS idx_scenes_number ON scenes(project_id, scene_number); CREATE TABLE IF NOT EXISTS characters ( character_id TEXT PRIMARY KEY, project_id TEXT NOT NULL, name TEXT NOT NULL, role TEXT, dominant_life_bhava TEXT, profile_json TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(project_id) ); CREATE INDEX IF NOT EXISTS idx_characters_project ON characters(project_id); CREATE TABLE IF NOT EXISTS scene_character_states ( state_id TEXT PRIMARY KEY, scene_id TEXT NOT NULL, character_id TEXT NOT NULL, outer_emotion TEXT, inner_emotion TEXT, hidden_emotion TEXT, spoken_intention TEXT, true_intention TEXT, body_anubhava TEXT, voice_anubhava TEXT, silence_meaning TEXT, rasa_contribution TEXT, state_json TEXT, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id), FOREIGN KEY(character_id) REFERENCES characters(character_id) ); CREATE TABLE IF NOT EXISTS rasa_beats ( beat_id TEXT PRIMARY KEY, scene_id TEXT NOT NULL, beat_order INTEGER NOT NULL, plot_beat TEXT NOT NULL, rasa_beat TEXT, sthayi_bhava TEXT, target_rasa TEXT, character_focus TEXT, vibhava_json TEXT, anubhava_json TEXT, sanchari_json TEXT, note_json TEXT, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id) ); CREATE INDEX IF NOT EXISTS idx_beats_scene_order ON rasa_beats(scene_id, beat_order); CREATE TABLE IF NOT EXISTS vibhavas ( vibhava_id TEXT PRIMARY KEY, scene_id TEXT NOT NULL, type TEXT NOT NULL, label TEXT NOT NULL, description TEXT, modality TEXT, cue_json TEXT, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id) ); CREATE INDEX IF NOT EXISTS idx_vibhavas_scene ON vibhavas(scene_id); CREATE INDEX IF NOT EXISTS idx_vibhavas_type ON vibhavas(type); CREATE TABLE IF NOT EXISTS anubhavas ( anubhava_id TEXT PRIMARY KEY, scene_id TEXT NOT NULL, character_id TEXT, modality TEXT, description TEXT NOT NULL, intensity INTEGER DEFAULT 3, cue_json TEXT, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id), FOREIGN KEY(character_id) REFERENCES characters(character_id) ); CREATE TABLE IF NOT EXISTS rule_definitions ( rule_id TEXT PRIMARY KEY, name TEXT NOT NULL, category TEXT NOT NULL, applies_to_rasa TEXT, severity_default TEXT, logic_json TEXT, message_template TEXT, recommendation_template TEXT, is_enabled INTEGER DEFAULT 1 ); CREATE TABLE IF NOT EXISTS rule_findings ( finding_id TEXT PRIMARY KEY, rule_id TEXT, scene_id TEXT, severity TEXT NOT NULL, category TEXT NOT NULL, message TEXT NOT NULL, recommendation TEXT, accepted INTEGER DEFAULT 0, ignored INTEGER DEFAULT 0, user_note TEXT, created_at TEXT NOT NULL, FOREIGN KEY(rule_id) REFERENCES rule_definitions(rule_id), FOREIGN KEY(scene_id) REFERENCES scenes(scene_id) ); CREATE TABLE IF NOT EXISTS ai_observations ( observation_id TEXT PRIMARY KEY, scene_id TEXT, model_name TEXT, task_type TEXT, prompt_hash TEXT, observation_text TEXT NOT NULL, accepted INTEGER DEFAULT 0, rejected INTEGER DEFAULT 0, user_correction TEXT, created_at TEXT NOT NULL, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id) ); CREATE TABLE IF NOT EXISTS prompt_templates ( template_id TEXT PRIMARY KEY, name TEXT NOT NULL, task_type TEXT NOT NULL, template_text TEXT NOT NULL, version INTEGER DEFAULT 1, is_active INTEGER DEFAULT 1 ); CREATE TABLE IF NOT EXISTS corpus_documents ( document_id TEXT PRIMARY KEY, title TEXT NOT NULL, source_type TEXT, language TEXT, authority_level TEXT, path TEXT, metadata_json TEXT, created_at TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS corpus_chunks ( chunk_id TEXT PRIMARY KEY, document_id TEXT NOT NULL, chunk_order INTEGER NOT NULL, text TEXT NOT NULL, rasa_tags_json TEXT, bhava_tags_json TEXT, use_case_tags_json TEXT, embedding_id TEXT, FOREIGN KEY(document_id) REFERENCES corpus_documents(document_id) ); CREATE TABLE IF NOT EXISTS scene_versions ( version_id TEXT PRIMARY KEY, scene_id TEXT NOT NULL, version_number INTEGER NOT NULL, script_text TEXT, scene_json TEXT, reason TEXT, created_at TEXT NOT NULL, FOREIGN KEY(scene_id) REFERENCES scenes(scene_id) ); CREATE TABLE IF NOT EXISTS exports ( export_id TEXT PRIMARY KEY, project_id TEXT NOT NULL, export_type TEXT NOT NULL, path TEXT NOT NULL, created_at TEXT NOT NULL, FOREIGN KEY(project_id) REFERENCES projects(project_id) );
२३. API Contracts
केवल endpoint list पर्याप्त नहीं। हर endpoint का input-output स्पष्ट होना चाहिए।
२३.१ Project create
Endpoint: `POST /projects`
Request —
{
"title": "My Rasa Script",
"author": "Author Name",
"language": "hi-en",
"dominant_rasa": "वीर"
}Response —
{
"project_id": "P001",
"title": "My Rasa Script",
"created_at": "2026-04-30T00:00:00"
}२३.२ Scene create
Endpoint: `POST /scenes`
Request —
{
"project_id": "P001",
"scene_number": 1,
"title": "पुत्र का लौटना",
"location": "आँगन",
"time_of_day": "संध्या",
"plot_event": "पुत्र लौटता है; पिता मौन रहता है।",
"script_text": ""
}Response —
{
"scene_id": "S001",
"status": "created"
}२३.३ Rule analysis
Endpoint: `POST /scenes/{scene_id}/analyze/rules`
Request —
{
"rule_scope": ["completeness", "rasabhasa", "transition"],
"mode": "draft"
}Response —
{
"scene_id": "S001",
"findings": [
{
"severity": "high",
"category": "Dialogue Economy",
"message": "भाव सीधे बोला गया है।",
"recommendation": "मौन, वस्तु-विभाव और अनुभाव बढ़ाएँ।"
}
]
}२३.४ AI diagnosis
Endpoint: `POST /scenes/{scene_id}/analyze/ai`
Request —
{
"task_type": "scene_diagnosis",
"model_mode": "fast",
"include_corpus_context": true
}Response —
{
"scene_id": "S001",
"observation_id": "AI001",
"status": "pending_user_review",
"observation_text": "Scene में करुण लक्ष्य है, पर object-vibhāva कम है..."
}२३.५ Export
Endpoint: `POST /export/wikidot`
Request —
{
"project_id": "P001",
"include": ["script", "rasa_sheets", "director_notes"],
"colored_heads": true
}Response —
{
"export_id": "E001",
"path": "D:\\RasaLekha\\projects\\P001\\exports\\wikidot.txt"
}२४. UI Wireframes
२४.१ Project Dashboard
Screen layout —
------------------------------------------------------------
RasaLekha Studio
------------------------------------------------------------
[New Project] [Open Project] [Import Script] [Export]
Project Cards:
---------------------------------------------------------
| Title | Dominant Rasa | Scenes | Warnings | Last Edited |
---------------------------------------------------------
Selected Project Summary:
- Dominant rasa
- Secondary rasas
- Total scenes
- Unfilled rasa sheets
- Rasabhasa warnings
- Last export
------------------------------------------------------------२४.२ Script Editor
---------------------------------------------------------------------------
| Left Pane | Center Editor | Right Rasa Panel |
---------------------------------------------------------------------------
| Project Tree | Scene Heading | Target Rasa |
| Acts / Sequences | Action | Sthayi Bhava |
| Scene List | Character | Vibhava |
| Character List | Dialogue | Anubhava |
| | Silence / Gesture tags | Sanchari |
| | | Rule Warnings |
---------------------------------------------------------------------------
| Bottom Pane: Rasa Beat Timeline / Character Emotion Strip / Rule Findings |
---------------------------------------------------------------------------Selected text tagging —
- Dialogue
- Action
- Silence
- Gesture
- Object-vibhāva
- Sound cue
- Camera cue
- Movement cue
- Cut cue
- Reaction shot
२४.३ Rasa Beat Board
Columns —
- Beat number
- Plot beat
- Rasa beat
- Character focus
- Vibhava
- Anubhava
- Sanchari
- Dialogue note
- Camera note
- Cut note
- Sound note
- Next beat link
२४.४ Character Matrix
Rows = characters.
Columns = scenes.
Each cell = outer emotion / inner emotion / hidden emotion / rasa contribution.
२५. Rule Engine Catalogue : प्रथम ३० नियम
हर rule इस format में लिखा जाए —
Rule ID:
Name:
Category:
Applies when:
Input fields:
Logic:
Severity:
Message:
Recommendation:
False-positive exception:
२५.१ Common completeness rules
COMMON_001 — Missing target rasa
Applies when: scene target_rasa is empty.
Severity: high in production mode, medium in draft mode.
Message: “Scene का लक्ष्य-रस खाली है।”
Recommendation: “Scene के बाद दर्शक की चित्तावस्था क्या होनी चाहिए, पहले यह निश्चित करें।”
COMMON_002 — Missing primary sthāyibhāva
Message: “स्थायीभाव निश्चित नहीं है; इसलिए रस diagnosis अस्थिर होगा।”
COMMON_003 — No vibhāva
Message: “भाव का कारण या वातावरण स्पष्ट नहीं है।”
Recommendation: “आलम्बन और उद्दीपन विभाव जोड़ें।”
COMMON_004 — No anubhāva
Message: “भाव देह, वाणी, मौन या gesture में नहीं उतरा।”
COMMON_005 — No exit chitta-state
Message: “Scene के बाद दर्शक की चित्तावस्था नहीं लिखी गई।”
२५.२ Karuṇa rules
KARUNA_001 — Missing loss-vibhāva
Applies when: target_rasa = करुण.
Logic: no alambana/uddipana indicating loss, separation, death, helplessness, absence.
Message: “करुण रस का शोक-विभाव अस्पष्ट है।”
Recommendation: “अनुपस्थिति-विभाव, स्मृति-वस्तु, मौन, टूटती साँस या रिक्त स्थान जोड़ें।”
KARUNA_002 — Too much direct grief dialogue
Message: “दुःख बहुत सीधे बोला गया है।”
Recommendation: “Dialogue घटाकर object-vibhāva और anubhāva बढ़ाएँ।”
KARUNA_003 — No silence point
Message: “करुण scene में मौन-बिंदु नहीं है।”
Recommendation: “मुख्य वाक्य या object-vibhāva के बाद silence रखें।”
KARUNA_004 — Sentimental music risk
Applies when: sound note contains continuous sad music / violin / melodrama.
Message: “करुण रस भावुकता में बदल सकता है।”
Recommendation: “सूक्ष्म ध्वनि, साँस, room tone, दूर पक्षी, वस्तु-ध्वनि पर विचार करें।”
२५.३ Vīra rules
VIRA_001 — Action without dhṛti
Message: “यह action है, पर वीर रस अभी सिद्ध नहीं।”
Recommendation: “धृति, संकल्प, कर्तव्य या धर्म-लक्ष्य जोड़ें।”
VIRA_002 — No clear objective
Message: “वीरता का लक्ष्य अस्पष्ट है।”
VIRA_003 — Confusing action geography
Message: “कर्मक्षेत्र स्पष्ट नहीं; वीर रस कमजोर होगा।”
VIRA_004 — Loudness mistaken for vīra
Message: “तेज sound या युद्ध-ध्वनि से ही वीर रस नहीं बनता।”
२५.४ Śānta rules
SHANTA_001 — Slow but not śānta
Message: “Scene धीमा है, पर शम/निर्वेद/वैराग्य स्पष्ट नहीं।”
SHANTA_002 — Excess movement/noise
Message: “शान्त रस के लिए दृश्य या sound-design अत्यधिक सक्रिय है।”
SHANTA_003 — Unearned śānta ending
Message: “शान्त conclusion अर्जित नहीं है; पहले संघर्ष, विवेक, त्याग या स्वीकार दिखना चाहिए।”
SHANTA_004 — Empty stillness
Message: “Stillness भावपूर्ण नहीं; केवल movement का अभाव है।”
२५.५ Rasa transition rules
TRANS_001 — Abrupt rasa shift
Message: “रस परिवर्तन बिना संचारी-पुल के हो रहा है।”
TRANS_002 — Karuṇa to Vīra missing bridge
Required bridge: शोक → ग्लानि/स्मृति → धृति → संकल्प → उत्साह।
TRANS_003 — Raudra to Śānta missing bridge
Required bridge: क्रोध → विवेक → करुणा → क्षमा → शम।
TRANS_004 — Śṛṅgāra to Karuṇa missing bridge
Required bridge: रति → प्रतीक्षा → संशय → वियोग → शोक।
२५.६ Dialogue rules
DIALOGUE_001 — Direct emotion declaration
Detects: “मैं दुखी हूँ”, “मैं क्रोधित हूँ”, “मुझे डर लग रहा है।”
Recommendation: “भाव को देह, वस्तु, मौन या subtext से व्यक्त करें।”
DIALOGUE_002 — Exposition replacing anubhāva
Message: “Dialogue अनुभाव का स्थान ले रहा है।”
DIALOGUE_003 — All characters same voice
Message: “पात्र-भेद dialogue में स्पष्ट नहीं।”
DIALOGUE_004 — Missing reaction beat
Message: “महत्त्वपूर्ण वाक्य के बाद reaction shot/anubhāva नहीं है।”
२६. Rule Engine Python Skeleton
from dataclasses import dataclass from typing import List, Optional @dataclass class RuleFinding: rule_id: str severity: str category: str message: str recommendation: str def has_any(items: Optional[list]) -> bool: return bool(items and len(items) > 0) def check_common_completeness(scene: dict) -> List[RuleFinding]: findings = [] if not scene.get("target_rasa"): findings.append(RuleFinding( rule_id="COMMON_001", severity="high", category="Completeness", message="Scene का लक्ष्य-रस खाली है।", recommendation="Scene के बाद दर्शक की चित्तावस्था क्या होनी चाहिए, पहले यह निश्चित करें।" )) if not scene.get("primary_sthayi_bhava"): findings.append(RuleFinding( rule_id="COMMON_002", severity="high", category="Completeness", message="स्थायीभाव निश्चित नहीं है।", recommendation="Scene का मूल भाव-बीज लिखें।" )) if not scene.get("exit_chitta_state"): findings.append(RuleFinding( rule_id="COMMON_005", severity="medium", category="Completeness", message="Scene के बाद दर्शक की चित्तावस्था नहीं लिखी गई।", recommendation="Exit chitta-state लिखें।" )) return findings def check_karuna(scene: dict) -> List[RuleFinding]: findings = [] if scene.get("target_rasa") != "करुण": return findings vibhavas = scene.get("vibhavas", {}) alambana = vibhavas.get("alambana", []) uddipana = vibhavas.get("uddipana", []) silence_points = scene.get("sound", {}).get("silence_points", []) if not has_any(alambana) and not has_any(uddipana): findings.append(RuleFinding( rule_id="KARUNA_001", severity="high", category="Karunabhasa", message="करुण रस का शोक-विभाव अस्पष्ट है।", recommendation="अनुपस्थिति-विभाव, स्मृति-वस्तु, मौन, टूटती साँस या रिक्त स्थान जोड़ें।" )) if not has_any(silence_points): findings.append(RuleFinding( rule_id="KARUNA_003", severity="medium", category="Silence", message="करुण scene में कोई मौन-बिंदु नहीं है।", recommendation="मुख्य वाक्य या object-vibhāva के बाद silence रखें।" )) return findings def run_rules(scene: dict) -> List[RuleFinding]: findings = [] findings.extend(check_common_completeness(scene)) findings.extend(check_karuna(scene)) return findings
२७. AI Prompt Templates
AI को uncontrolled prompt न दिया जाए। प्रत्येक task के लिए strict prompt template बने।
२७.१ Scene diagnosis prompt
You are a rasa-dramaturgy assistant.
Analyze the scene only through these categories:
1. primary sthayi-bhava
2. target rasa
3. alambana vibhava
4. uddipana vibhava
5. anubhava
6. sanchari sequence
7. sattvika possibility
8. rasabhasa risk
9. dialogue economy
10. exit chitta-state
Do not praise the scene.
Do not rewrite unless asked.
Give concrete problems and concrete remedies.
If uncertain, say uncertain.
Do not treat emotion labels as rasa proof.२७.२ Rewrite prompt
Rewrite the scene to strengthen the target rasa.
Rules:
- Do not add sentimental dialogue.
- Prefer vibhava, anubhava, silence, object, gesture.
- Preserve plot facts.
- Reduce direct emotion statements.
- Provide before/after explanation.
- Mention which rasa-beats changed.२७.३ Cinematography prompt
Create rasa-based cinematography notes.
Do not give generic cinematic beauty.
Explain lens, distance, movement, light, shadow, focus, negative space, and object-vibhava according to target rasa.
Mention one shot that should be avoided because it is beautiful but rasa-destructive.२७.४ Rasabhasa prompt
Find potential rasabhasa.
For each issue:
- State the intended rasa.
- State the conflicting element.
- Explain why it weakens rasa.
- Suggest correction using vibhava, anubhava, sanchari or silence.
Do not declare final judgement; give diagnostic warning.२८. Software Architecture
Recommended architecture —
[Desktop UI / Browser UI / Tauri]
|
v
[FastAPI Backend]
|
+--> [SQLite Database]
|
+--> [Rule Engine]
|
+--> [RAG Retriever]
|
+--> [LLM Gateway]
| |
| +--> [llama.cpp local server]
| +--> [vLLM WSL2 server]
|
+--> [Export Engine]
|
+--> [ML Dataset Export]Frontend choices —
| Option | लाभ | सीमा |
|---|---|---|
| Browser UI | fastest development, cross-platform | desktop feel कम |
| Tauri + React | हल्का native desktop feel | setup थोड़ा अधिक |
| .NET WPF/WinUI | Windows native, stable | AI/Python integration के लिए bridge चाहिए |
सिफारिश —
- MVP: Browser UI + FastAPI.
- Production: Tauri + React frontend, FastAPI backend.
- VB6 integration: JSON/CSV import-export और later COM/local HTTP bridge.
Backend के लिए Python FastAPI अच्छा है क्योंकि —
- AI integration आसान।
- SQLite/PostgreSQL integration आसान।
- embeddings, vector search, LLM API calls सरल।
- later ML training possible।
- Windows और WSL2 दोनों में चल सकता है।
२९. Installation Plan on Desktop
२९.१ Windows side
Install —
- Git.
- VS Code / PyCharm / preferred editor.
- Anaconda / Miniconda.
- Node.js LTS.
- SQLite tools.
- Optional: llama.cpp Windows CUDA build.
- Optional: Tauri prerequisites.
Create backend environment —
conda create -n rasalekha python=3.11 -y
conda activate rasalekha
pip install fastapi uvicorn pydantic sqlalchemy jsonschema duckdb pandas
pip install python-multipart aiofilesCreate frontend —
cd D:\RasaLekha
mkdir ui
cd ui
npm create vite@latest . -- --template react
npm install
npm run devRun backend —
cd D:\RasaLekha\backend
conda activate rasalekha
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload२९.२ WSL2 side
For heavy AI backend —
conda create -n rasalekha-ai python=3.11 -y
conda activate rasalekha-ai
pip install fastapi uvicorn sentence-transformers
# vLLM install बाद में, जब basic system stable हो।Recommended service split —
- UI: Windows.
- API backend: Windows initially.
- Heavy LLM: WSL2 localhost:8001.
- Rasa backend: localhost:8000.
- llama.cpp fallback: localhost:8080.
३०. MVP Development Roadmap
३०.१ Week 1 : Foundation
- Final folder structure बनाइए।
- SQLite database create कीजिए।
- Project और Scene CRUD बनाइए।
- JSON scene schema लागू कीजिए।
- Basic FastAPI server चलाइए।
- Sample project और sample scene insert कीजिए।
Deliverable: project create/open/save working.
३०.२ Week 2 : Rasa UI
- Script editor screen बनाइए।
- Scene Rasa Sheet form बनाइए।
- Character Bhāva Matrix बनाइए।
- Rasa Beat Board बनाइए।
- Save/load working कीजिए।
Deliverable: बिना AI के manual Rasa Writer.
३०.३ Week 3 : Rule Engine
- First 30 rules implement कीजिए।
- Rule findings panel बनाइए।
- Accept / Ignore / User note buttons दीजिए।
- Karuṇa, Vīra, Śānta rules test कीजिए।
- Export rule findings to CSV.
Deliverable: basic rasa diagnostics working.
३०.४ Week 4 : Export and Backup
- Wikidot export.
- HTML export.
- CSV export.
- JSON full project export.
- Backup zip.
- Restore from backup.
Deliverable: first usable MVP.
३०.५ Week 5–6 : AI Bridge
- llama.cpp/Ollama style local API bridge.
- AI diagnosis prompt.
- AI observations table.
- Accept/reject/modify workflow.
- No auto-accept.
Deliverable: AI as assistant, not judge.
३०.६ Week 7–8 : RAG Corpus
- Corpus import.
- Chunking.
- Tagging.
- Search by rasa/bhava.
- AI prompt with retrieved context.
Deliverable: corpus-grounded rasa assistant.
३१. Development Stack
Recommended practical stack —
| Layer | Tool |
|---|---|
| UI MVP | React + browser |
| Desktop wrapper | Tauri later |
| Backend | Python FastAPI |
| Database MVP | SQLite |
| Database production | PostgreSQL |
| Analytics | DuckDB |
| Embeddings | local embedding model |
| Vector DB MVP | FAISS or SQLite vector extension |
| LLM simple | llama.cpp / Ollama-compatible local server |
| LLM heavy | vLLM in WSL2 |
| Export | Python HTML/CSV/JSON/DOCX tools |
| Versioning | internal revision table + optional Git backup |
| Backup | zip + timestamp + external disk copy |
Avoid starting with too many frameworks. First build the rasa data model and editor.
३२. Screen-by-screen Design
३२.१ Project Dashboard
Shows —
- Project title.
- Genre.
- Dominant rasa.
- Secondary rasas.
- Total scenes.
- Unfilled rasa sheets.
- Rasabhasa warnings.
- Last edited.
- Export buttons.
- Backup button.
३२.२ Script Editor
Layout —
| Left | Center | Right |
|---|---|---|
| Scene list | Script text | Rasa panel |
| Character list | Dialogue/action | Rule/AI notes |
| Project tree | Inline tags | Save/Export controls |
Script editor में selected line को tag किया जा सके —
- Dialogue.
- Action.
- Silence.
- Gesture.
- Object-vibhāva.
- Sound cue.
- Camera cue.
- Movement cue.
३२.३ Rasa Panel
Fields —
- Target Rasa.
- Primary Sthāyibhāva.
- Secondary Rasa.
- Alambana Vibhava.
- Uddipana Vibhava.
- Main Anubhava.
- Sanchari Sequence.
- Silence Point.
- Dialogue Economy.
- Exit Chitta-state.
- Rasabhasa Warnings.
३२.४ Continuity Graph
Displays —
- Rasa band.
- Intensity.
- Scene transitions.
- Climax build.
- Gaps.
- Abrupt shifts.
- Overused rasa.
- Character emotional arc.
३३. Dialogue Analyzer
Dialogue analyzer को केवल grammar या style नहीं देखना चाहिए। उसे भाव-व्यञ्जना देखनी चाहिए।
मुख्य checks —
- क्या पात्र अपनी भावना सीधे बोल रहा है?
- क्या subtext है?
- क्या मौन अधिक प्रभावी होगा?
- क्या dialogue plot information दे रहा है पर rasa नहीं?
- क्या सभी पात्र एक जैसी भाषा बोल रहे हैं?
- क्या dialogue character-state से मेल खाता है?
- क्या dialogue अनुभाव को नष्ट कर रहा है?
- क्या repetition intentional है?
- क्या वाक्य के बाद reaction चाहिए?
Direct emotion detection examples —
- “मैं बहुत दुखी हूँ।”
- “मैं तुमसे बहुत क्रोधित हूँ।”
- “मुझे डर लग रहा है।”
- “मैं अकेला हूँ।”
Warning —
“भाव सीधे कहा गया है। क्या इसे देह, वस्तु, मौन या आधे वाक्य से व्यक्त किया जा सकता है?”
Alternative suggestions —
- “वह दूसरा कप मेज़ पर रखता है, फिर याद आता है — अब कोई नहीं आएगा।”
- “उसकी उँगलियाँ तलवार की मूठ पर कसती हैं; वह कुछ नहीं कहता।”
- “द्वार खुला है। वह भीतर नहीं जाता।”
३४. Cinematography Planner Integration
हर scene के लिए cinematography fields —
| Field | Options |
|---|---|
| Camera distance | close, medium, long, mixed |
| Lens rasa | wide, normal, telephoto, macro |
| Movement | static, push-in, pull-back, handheld, tracking |
| Light | soft, hard, high contrast, low contrast, shadow, dhavala |
| Frame geometry | symmetrical, broken, vertical, horizontal, empty |
| Focus | deep, shallow, rack, soft |
| Negative space | yes/no and purpose |
| Object-vibhava shot | prop/object |
| Avoid shot | सुंदर पर रस-विरोधी shot |
Department sheet example —
Scene 23: करुण. Close-up delay करें. पहले खाली आसन और अछूता थाल दिखाएँ. Soft low contrast. Static frame. Music नहीं; sound में केवल room tone.
३५. Editing Planner Integration
Editing module में —
- Must-hold shots.
- Reaction shots.
- Silence points.
- Cut-before-speech / cut-after-reaction.
- Montage sanchari chain.
- Transition in/out.
- Rhythm: मन्द, दृढ़, तीव्र, विरल.
- Rasa aftertaste.
Example output —
Scene 12 करुण है। पुत्र के dialogue के तुरंत बाद cut न करें। पिता की प्रतिक्रिया पर 3–5 भाव-beats ठहरना आवश्यक। खाली आसन cutaway को scene-end पर लौटाएँ।
३६. Sound-design Planner Integration
Sound module में —
- Dhvani-vibhava.
- Breath-anubhava.
- Silence.
- Offscreen sound.
- Leit-sound.
- Ambience texture.
- Music policy.
- Frequency emphasis.
- Spatial placement.
Example —
करुण scene में violin न जोड़ें। मुख्य ध्वनि: अछूते थाल की हल्की खनक, पिता की टूटती साँस, दूर का सूना पक्षी। Dialogue के बाद silence रखें।
३७. Dance-theatre Planner Integration
यदि project dance-theatre या stylized nāṭya है, software movement phrase module दे।
Fields —
- Movement phrase name.
- Character movement या cosmic pattern?
- Gesture sign या भाव-अनुभाव?
- Repetition purpose.
- Ensemble role.
- Breath.
- Face-body unity.
- Stillness.
- Shānta through विलय or absence?
- Prop-vibhava.
- Light/sound relation.
Example —
शान्त sequence में movement रोकना नहीं; movement को धीरे-धीरे श्वास में विलीन करना। समूह की वृत्त-गति खुलकर रिक्तता बने।
३८. Rasa Graph
Software को visual graph देना चाहिए।
Scene-level graph —
- X-axis: scene order.
- Y-axis: intensity.
- Color: target-rasa.
- Markers: turning points, silence, climax, rasa-breaks.
Character-rasa graph —
- पिता: शोक → दबा रौद्र → करुण → शान्त।
- पुत्र: भय → लज्जा → दैन्य → धृति।
- माँ: आशा → स्मृति → करुण।
Rasa transition graph —
- करुण → वीर: शोक → ग्लानि → धृति → संकल्प → उत्साह।
- रौद्र → शान्त: क्रोध → विवेक → करुणा → क्षमा → शम।
- शृङ्गार → करुण: रति → प्रतीक्षा → संशय → वियोग → शोक।
Software चेतावनी दे सकता है यदि transition बिना संचारी-पुल के हो रहा है।
३९. Rasa Scoring System
Scoring को final truth न बनाया जाए। इसे diagnostic रखें।
हर scene को 0–5 scale पर score दिया जा सकता है —
| Score | अर्थ |
|---|---|
| Sthāyibhāva clarity | मूल भाव स्पष्ट है या नहीं |
| Vibhāva strength | भाव का कारण और वातावरण हैं या नहीं |
| Anubhāva embodiment | भाव देह/वाणी/मौन में है या नहीं |
| Sanchari richness | छोटे भाव प्रधान भाव को पुष्ट कर रहे हैं या नहीं |
| Dialogue economy | dialogue भाव को मार नहीं रहा |
| Rasa continuity | पिछले और अगले scene से सन्धि है |
| Rasabhasa risk | विरोधी तत्व कितना है |
| Cinematic support | camera/edit/sound notes रस-संगत हैं |
| Aftertaste clarity | scene के बाद चित्तावस्था स्पष्ट है |
Example —
Karuna Scene Diagnostic:
Sthayi clarity: 4/5
Vibhava strength: 3/5
Anubhava embodiment: 2/5
Dialogue economy: 1/5
Silence: 0/5
Rasabhasa risk: High
Recommendation: Dialogue घटाएँ, खाली वस्तु-विभाव जोड़ें, मौन रखें।४०. Rasa-aware Export
Software से अलग-अलग users के लिए अलग exports बनने चाहिए।
Writer export
- Full script.
- Scene rasa sheets.
- Dialogue warnings.
- Rewrite notes.
Director export
- Scene objective.
- Character bhāva matrix.
- Target rasa.
- Blocking notes.
- Actor instructions.
Actor export
हर पात्र के लिए —
- Scene-wise inner emotion.
- Outer emotion.
- Hidden emotion.
- Anubhava.
- Silence meaning.
- Voice/breath note.
Cinematographer export
- Scene target-rasa.
- Lens.
- Distance.
- Movement.
- Light.
- Focus.
- Negative space.
- Avoid shots.
Editor export
- Must-hold shots.
- Reaction shots.
- Silence.
- Rasa transition.
- Montage chain.
- Scene aftertaste.
Sound-designer export
- Dhvani-vibhava.
- Breath.
- Silence.
- Ambience.
- Leit-sound.
- Music policy.
Dance-theatre export
- Movement phrase.
- Gesture purpose.
- Ensemble role.
- Rhythm.
- Stillness.
- Shānta-vilaya notes.
४१. Wikidot Export Format
Software को direct Wikidot export देना चाहिए।
Example —
+ [[size 160%]][[span style="color:Maroon;background:#FFF3E6;padding:0.15em 0.45em;border-left:8px solid Maroon;"]]**Scene १२ : पिता का मौन**[[/span]][[/size]]
||~ घटक ||~ विवरण ||
|| Target Rasa || करुण ||
|| Sthāyibhāva || शोक ||
|| Ālambana Vibhāva || पुत्र, मृत छोटे पुत्र की स्मृति ||
|| Uddīpana Vibhāva || अछूता थाल, खाली आसन, संध्या ||
|| Anubhāva || दृष्टि न मिलाना, टूटी साँस ||
|| Sanchari || स्मृति, लज्जा, दैन्य ||
|| Silence || पुत्र के “मैं लौट आया” के बाद ||Wikidot export में ये options रहें —
- colored heads on/off.
- TOC include/exclude.
- code blocks include/exclude.
- department sheets include/exclude.
- only selected scenes export.
- full project export.
महत्त्वपूर्ण: Exported headings में `+`, `++`, `+++` line-start पर रहने चाहिए। इन्हीं से `[[toc]]` बनता है। Heading को केवल `[[div]]` में बदलना नहीं है।
४२. Integration with Existing Self-made Software Workflow
Existing development ecosystem में VB6, C++ DLLs, CSV, RAMDISK और CLI workflows हैं। इस software को उनसे अलग island न बनाया जाए।
Possible integrations —
१. JSON/CSV export जिसे VB6 पढ़ सके।
२. SQLite database read-only mode से VB6 GUI display कर सके।
३. Local HTTP API जिसे VB6 `WinHttpRequest` से call करे।
४. C++ DLL later for fast rule checks, यदि आवश्यक हो।
५. Direct text export for Wikidot / HTML upload।
६. HTML report generation for web publishing।
VB6 integration के लिए सबसे सरल route —
- RasaLekha backend JSON export करे।
- VB6 GUI उस JSON/CSV को read करे।
- जरूरत हो तो selected scene का rasa sheet GUI में दिखे।
- Local API बाद में जोड़ा जाए।
VB6 sample call concept —
' Pseudo-code only
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "http://127.0.0.1:8000/scenes/S001", False
http.Send
Text1.Text = http.ResponseText४३. ML Dataset भविष्य के लिए
यदि अनेक scripts, scenes और manually corrected rasa sheets collect करें, तो भविष्य में ML model train किया जा सकता है।
Dataset rows —
| Field | Example |
|---|---|
| scene_text | पूरा scene |
| target_rasa | करुण |
| primary_sthayi | शोक |
| vibhava_tags | empty_seat, death_memory |
| anubhava_tags | silence, broken_breath |
| sanchari_chain | स्मृति > दैन्य > शोक |
| dialogue_directness_score | 0.72 |
| rasabhasa_label | करुणाभास |
| corrected_by_user | yes |
| final_quality_score | 4 |
ML tasks —
- Rasa classification.
- Missing vibhava detection.
- Dialogue directness scoring.
- Rasabhasa risk prediction.
- Scene aftertaste prediction.
- Rasa transition quality scoring.
परन्तु initial ML से पहले manual tagged dataset चाहिए। बिना उच्च-quality annotations के ML केवल superficial patterns सीखेगा।
४४. AI Visual Generation के साथ भविष्य-सम्बन्ध
RasaLekha future में image/video generation tools से जुड़ सकता है।
Workflow —
१. Scene rasa sheet बने।
२. Cinematography rasa notes बने।
३. Visual prompt बने।
४. AI image/video generate करे।
५. Rasabhasa checker पूछे —
- क्या face और body aligned हैं?
- क्या विभाव स्पष्ट है?
- क्या lighting target-rasa से मेल खाती है?
- क्या frame केवल सुन्दर है या भावसिद्ध?
- क्या gesture artificial है?
- क्या करुण में अति-सौन्दर्य है?
- क्या वीर में केवल costume है, धृति नहीं?
Example visual prompt —
करुण रस, संध्या, सूना आँगन, खाली आसन, पिता frame के किनारे, soft low contrast, no melodramatic tears, object-vibhava: अछूता थाल, delayed close-up.
४५. Classical Corpus Tagging System
Software में corpus tagging भी होनी चाहिए।
Example tag structure —
{
"passage_id": "NS_Rasa_001",
"source": "Nāṭyaśāstra",
"topic": "Rasa-nishpatti",
"rasa": ["general"],
"bhava_terms": ["vibhava", "anubhava", "vyabhicari"],
"use_case": ["theory", "rule_engine"],
"authority_level": "primary",
"notes": "Rasa arises through conjunction of vibhava, anubhava, vyabhicari."
}Search examples —
- “करुण में object-vibhava”
- “रौद्र में अनुभाव”
- “शान्त रस और निर्वेद”
- “शृङ्गार में दृष्टि”
- “वीर में उत्साह”
- “संचारी भाव से transition”
४६. Rasa Continuity Audit
Software में एक button होना चाहिए —
Audit Full Script for Rasa Continuity
यह check करे —
१. क्या प्रत्येक scene का target-rasa है?
२. क्या dominant rasa clear है?
३. क्या climax target-rasa से मेल खाता है?
४. क्या कई scenes केवल plot-fillers हैं?
५. क्या करुण से हास्य बिना transition जा रहा है?
६. क्या रौद्र बहुत अधिक है और शान्त/करुण balance नहीं?
७. क्या वीर climax अर्जित है?
८. क्या शान्त ending earned है या अचानक?
९. क्या repeated motifs अर्थपूर्ण लौटते हैं?
१०. क्या scene aftertaste next scene से जुड़ता है?
Report example —
Full Script Rasa Audit:
- Dominant rasa: वीर with करुण base.
- Problem: Act 2 middle has 5 plot-heavy scenes with no clear rasa-beat.
- Problem: Scene 31 shifts from करुण to हास्य without transition.
- Strength: Father-son arc moves शोक → रौद्र → करुण → शान्त coherently.
- Climax warning: वीर action is strong but dharma-sankalpa beat missing before battle.४७. Example Rule Output
Scene text —
पिता: मैं बहुत दुखी हूँ।
पुत्र: मुझे क्षमा कर दीजिए।
पिता: मैं तुम्हें क्षमा नहीं कर सकता।Target rasa: करुण।
Rule output —
Severity: High
Category: Dialogue Economy
Finding: भाव सीधे बोला गया है। करुण रस में शोक को वस्तु, मौन और देह से अधिक प्रभावी बनाया जा सकता है।
Recommendation: पिता का dialogue घटाएँ। अछूता थाल, खाली आसन, दृष्टि न मिलाना, टूटी साँस जैसे अनुभाव जोड़ें।
Severity: Medium
Category: Vibhava Weakness
Finding: पुत्र की अनुपस्थिति या शोक का आलम्बन स्पष्ट नहीं।
Recommendation: कोई स्मृति-वस्तु या पहले की घटना का संकेत दें।
AI rewrite suggestion —
पुत्र द्वार पर रुकता है। पिता चूल्हे के पास बैठा है। दो थाल रखे हैं; एक अछूता। पुत्र धीरे से झुकता है। पिता हाथ बढ़ाता है, पर आशीर्वाद नहीं देता। उसकी उँगलियाँ अछूते थाल पर रुक जाती हैं।
पुत्र: “मैं... लौट आया।”
पिता कुछ नहीं कहता।४८. Production Workflow
Software का real use film production में इस क्रम से हो —
१. Writer rough script लिखे।
२. Scene rasa sheets भरे।
३. Rule audit करे।
४. AI notes ले पर manually decide करे।
५. Director character bhāva matrix देखे।
६. Cinematographer department sheet बनाए।
७. Editor pre-edit rasa rhythm समझे।
८. Sound-designer dhvani-vibhāva और silence map बनाए।
९. Actors scene-specific inner/outer/hidden emotion पढ़ें।
१०. Shoot के बाद footage को actual anubhāva quality पर tag किया जाए।
११. Edit के बाद scene aftertaste पुनः audit किया जाए।
४९. Human-in-the-loop Governance
AI को uncontrolled creative authority न दें। System में यह workflow हो —
- AI suggestion = draft.
- User decision = accepted/rejected.
- Accepted suggestion stored.
- Rejected suggestion reason stored.
- User correction future rule/ML data बने.
हर AI note के साथ buttons —
- Accept.
- Reject.
- Modify.
- Convert to rule.
- Save as example.
- Mark as wrong.
इससे धीरे-धीरे software शैली और सिद्धान्त के अनुसार सुधरेगा।
५०. Backup and Safety Plan
Local-first software में backup अनिवार्य है।
Backup policy —
- हर project save पर SQLite WAL checkpoint.
- हर दिन timestamp zip.
- हर major export से पहले backup.
- external disk backup weekly.
- project folder के साथ `project.rasa.json` रखना।
- database corrupt होने पर JSON से पुनर्निर्माण सम्भव हो।
Backup folder example —
D:\RasaLekha\backups\
2026-04-30_ProjectName_full.zip
2026-05-01_ProjectName_full.zipBackup script concept —
python tools/backup_project.py --project P001 --dest D:\RasaLekha\backups५१. Testing Plan
Testing केवल technical न हो; rasa-testing भी हो।
५१.१ Technical tests
- Project create/save/load.
- Scene edit.
- JSON validation.
- SQLite integrity.
- Export correctness.
- AI server connectivity.
- WSL2 fallback.
- Backup restore.
- Rule finding persistence.
- User accept/reject workflow.
५१.२ Rasa tests
Test scenes बनाइए —
१. करुण scene with missing vibhava.
२. वीर scene without dhriti.
३. शान्त scene with too much movement.
४. भयानक scene with early reveal.
५. शृङ्गार scene with direct declaration.
६. रौद्र scene with no cause.
७. हास्य scene with bad timing.
८. AI-generated beautiful but rasabhasa image description.
९. Abrupt rasa transition.
१०. Good scene as gold standard.
Software की accuracy इन पर जाँचें।
५२. Minimum Useful Product
पहला usable version इतना ही करे —
१. Script लिखे।
२. Scene rasa sheet दे।
३. Character inner/outer/hidden भाव matrix दे।
४. Rasa-beat table दे।
५. Rule warnings दे।
६. HTML/CSV/JSON export दे।
७. Backup दे।
८. User correction save करे।
यदि यह मजबूत बन गया, तो AI जोड़ना सार्थक होगा। यदि यह नहीं बना, तो AI जोड़ने से software एक सामान्य chatbot-wrapper बन जाएगा।
५३. Ideal Final Product
पूर्ण version में यह होगा —
- Full screenplay editor.
- Rasa-aware outline.
- Scene-by-scene rasa sheets.
- Character bhāva matrix.
- Rasa graph.
- Rasabhasa detector.
- Dialogue subtext analyzer.
- Cinematography planner.
- Editing planner.
- Sound-design planner.
- Dance-theatre planner.
- Local LLM.
- Classical corpus RAG.
- AI rewrite assistant.
- Department exports.
- ML dataset export.
- VB6/CSV integration.
- Offline-first privacy.
- Project-specific custom rules.
- User-trained examples.
- Wikidot-ready colored export.
- Future AI image/video prompt audit.
५४. सम्भावित कठिनाइयाँ
५४.१ AI hallucination
AI शास्त्र-सम्मत भाषा बोलकर भी गलत हो सकता है। उपाय —
- RAG corpus.
- Rule engine.
- User approval.
- Retrieval trace.
- Never auto-accept.
५४.२ Over-structuring
Writer थक सकता है यदि हर scene में बहुत fields भरने पड़ें। उपाय —
- Essential mode.
- Advanced mode.
- AI prefill.
- Templates.
- Keyboard shortcuts.
५४.३ Mechanical rasa
Software formula बना सकता है। उपाय —
- हर rule के साथ context exception.
- User override.
- Note: “This is intentional contradiction.”
- Rasabhasa warning, not verdict.
५४.४ Performance
Large models slow हो सकते हैं। उपाय —
- small model for quick notes.
- large model for deep audit.
- background queue.
- cached embeddings.
- GPU allocation settings.
५४.५ Multi-GPU complexity
Dual GPU setup automatic नहीं। उपाय —
- start with single GPU local model.
- then vLLM tensor parallel.
- fallback llama.cpp.
- model size carefully choose.
५५. सन्धान : वास्तविक निर्माण-क्रम
अब इसे कार्यरूप में ऐसे बनाइए।
चरण १ : Documentation-first
पहले `RasaLekha_Spec.md` बनाइए। उसमें लिखें —
- ontology.
- scene sheet.
- database fields.
- UI screens.
- rules.
- export formats.
- API contracts.
- backup plan.
चरण २ : JSON schema
बनाइए —
- scene.schema.json
- project.schema.json
- character.schema.json
- rule_finding.schema.json
- ai_observation.schema.json
चरण ३ : SQLite prototype
Python script से create database और sample scenes insert करें।
चरण ४ : Minimal FastAPI
Basic endpoints बनाइए —
- create project.
- create scene.
- update rasa sheet.
- run rules.
- export HTML/CSV/JSON.
चरण ५ : Simple browser UI
React/HTML UI में —
- scene list.
- editor.
- rasa sheet form.
- rule findings.
- export panel.
चरण ६ : Rule engine
पहले 30 rules लिखें। बाद में 100+ rules हो सकते हैं।
चरण ७ : Local LLM bridge
पहले simple local server से connect करें। फिर WSL2 vLLM add करें।
चरण ८ : RAG
Corpus import करें। Embeddings बनाइए। Search API बनाइए।
चरण ९ : Department sheets
Cinematography/editing/sound/movement export जोड़ें।
चरण १० : Real project test
किसी छोटे 5-scene script पर पूरा workflow test करें। फिर 20-scene script। फिर feature-length project।
५६. निष्कर्ष
रसाधारित scriptwriting software का लक्ष्य केवल screenplay लिखना नहीं, बल्कि नाट्य की भाव-रचना को visible, editable, testable और production-ready बनाना है। सामान्य software घटना और format पर रुक जाते हैं। यह software घटना से आगे बढ़कर स्थायीभाव, विभाव, अनुभाव, संचारी भाव, सात्त्विक भाव, रस-सन्धि, रसाभास और दर्शक-चित्तावस्था को script की मूल संरचना में रखेगा।
Z890aiTop + dual RTX 5090 + 256 GB RAM machine इस कार्य के लिए पर्याप्त से अधिक शक्तिशाली है। पर शक्ति का सही उपयोग तभी होगा जब architecture स्पष्ट हो — manual rasa structure पहले, rule engine दूसरे, local AI तीसरे, corpus RAG चौथे, और ML refinement सबसे बाद में।
मुख्य सिद्धान्त यही है —
AI लेखक नहीं, रस-सहायक हो।
Rule engine न्यायाधीश नहीं, परीक्षक हो।
Software गुरु नहीं, नाट्य-साधना का उपकरण हो।
जब ऐसा software बनेगा, तब scriptwriting केवल plot construction नहीं रहेगी। वह चित्त-रचना, भाव-सन्धान और रस-सिद्धि की सुव्यवस्थित प्रक्रिया बनेगी।
५७. उत्कर्ष
इस software का सर्वोच्च उपयोग केवल film industry में नहीं होगा। यह नाटक, dance-theatre, web-series, AI video generation, classical text adaptation, पुराणकथा रूपान्तरण, actor training, cinematography education, editing pedagogy, sound-design और digital humanities — सभी के लिए आधार बन सकता है।
भविष्य में यही system classical Sanskrit corpus, modern cinema examples, AI-generated visuals और human audience responses को जोड़कर एक नये भारतीय aesthetic computing discipline की नींव रख सकता है।
इसका अन्तिम लक्ष्य केवल software बनाना नहीं है। लक्ष्य है —
भारतीय नाट्यबुद्धि को digital युग में कार्यशील बनाना।
प्रस्तुत आलेख का चतुर्थ भाग है “ComfyUI / SkyReels आदि द्वारा वास्तविक कृत्रिमबुद्धि चलचित्र का निर्माण” ।