عن المشروع

Oh Sheet! هو خط أنابيب مفتوح المصدر يحوّل الأغاني إلى نوتة بيانو لليدين. يمكن للمستخدمين لصق رابط يوتيوب أو رفع ملف صوتي MP3/WAV أو تقديم ملف MIDI، ويعيد النظام نوتة PDF وMusicXML وMIDI مُضفى عليه الطابع البشري. الواجهة الخلفية مبنية بلغة Python وإطار FastAPI. تستخدم yt-dlp لاستخراج الصوت، وDemucs لفصل المسارات الصوتية اختياريًا، وBasic Pitch من Spotify لتحويل الصوت إلى MIDI. تقوم مرحلة توزيع مخصصة بإسناد اللحن لليد اليمنى والباص/التناغم لليد اليسرى. تضيف مرحلة إضفاء الطابع البشري توقيتًا دقيقًا وديناميكيات سرعة وعلامات بدّال وعلامات أداء. يعتمد النقش افتراضيًا على خط أنابيب داخلي يعمل داخل العملية باستخدام music21 وLilyPond لإنتاج MusicXML وPDF؛ ويمكن استخدام خدمة نقش HTTP عن بُعد اختيارية كخيار احتياطي. الواجهة الأمامية هي تطبيق Flutter مع عارض نوتة موسيقية تفاعلي مدعوم بـ OpenSheetMusicDisplay (OSMD) وتشغيل عبر Tone.js. كما يتضمن لفافة بيانو مخصصة مبنية على canvas بأيدٍ ملوّنة بألوان مختلفة وشبكة إيقاعات متزامنة مع الإيقاع. تبث أحداث WebSocket تقدم خط الأنابيب مع رسوم متحركة لتميمة لكل مرحلة. يعرض المشروع واجهة REST API لرفع الصوت أو MIDI، وإرسال المهام، واستطلاع الحالة، وبث الأحداث المباشرة، وتنزيل المخرجات. كما تتوفر نقاط نهاية للعاملين لكل مرحلة للتنسيق الخارجي. يُدعم النشر عبر Docker Compose، ويتضمن المستودع سير عمل CI، وأدوات تقييم النسخ دون اتصال، وتكاملًا مع منصة TuneChat التعاونية لتعلم الموسيقى.