Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
yamaha-smaf-player — Yamaha SMAF (.mmf) रिंगटोन के लिए एक dependency-free C++ प्लेयर: 2000 के दशक के MA-3 / MA-5 फोन चिप्स का polyphonic-ringtone प्रारूप, अपने स्वयं के ROM-free FM इंजन के साथ पुनर्निर्मित। वह खुला प्लेयर जिसे किसी ने पूरा नहीं किया। FXChainPlayer में सिद्ध। | Kitploit
उपकरण/GitHubGitHub/akustikrausch/yamaha-smaf-player
एम्बेडेड सिस्टम सुरक्षारिवर्स इंजीनियरिंगहार्डवेयर सुरक्षाफर्मवेयर विश्लेषण
GitHubakustikrausch/yamaha-smaf-player

yamaha-smaf-player

Yamaha SMAF (.mmf) रिंगटोन के लिए एक dependency-free C++ प्लेयर: 2000 के दशक के MA-3 / MA-5 फोन चिप्स का polyphonic-ringtone प्रारूप, अपने स्वयं के ROM-free FM इंजन के साथ पुनर्निर्मित। वह खुला प्लेयर जिसे किसी ने पूरा नहीं किया। FXChainPlayer में सिद्ध।

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट
6211 महीना पहलेKitploit द्वारा समीक्षित

Yamaha SMAF प्लेयर (C++)

द्वारा: Akustikrausch (Andreas Wendorf)

build license Apache 2.0 C++20 no dependencies Yamaha MA-3/MA-5 FM synthesis ROM-free proven in FXChainPlayer

एक छोटा, निर्भरता-मुक्त यामाहा SMAF रिंगटोन प्लेयर (.mmf) C++ में। आप इसे उन फ़ाइलों में से एक देते हैं जिन्होंने 2004 में आपके Samsung, Sharp या Panasonic फ़ोन को डीडल-डीडल-डी बजाया था, और यह आपको साफ़ स्टीरियो ऑडियो देता है। कोई फ़ोन नहीं, कोई फ़र्मवेयर नहीं, कोई सैंपल ROM नहीं। बस FM चिप, सॉफ़्टवेयर में पुनर्निर्मित।

यह एक पूरे दशक की ध्वनि है जिसे लगभग किसी ने ओपन कोड में संरक्षित करने की जहमत नहीं उठाई। लाखों ऐसी फ़ाइलें अभी भी मौजूद हैं, और किसी ने भी उनके लिए एक ओपन प्लेयर कभी पूरा नहीं किया: प्रयास 2004 में रुक गए या सिंथ को पूरी तरह से बायपास कर दिया। तो यहाँ एक C++ प्लेयर है, जो फ़ॉर्मेट से शुरू करके लिखा गया है, अपने स्वयं के FM सिंथ कोर के साथ।

🎧 यह कोड एक वास्तविक उत्पाद में शामिल है: FXChainPlayer. एक नेटिव विंडोज़ ऑडियो प्लेयर जो आपके पुराने रिंगटोन को आपके FLAC, SID और Amiga मॉड्यूल के बगल में बजाता है। यहीं पर यह इंजन हर दिन चलता है, सैकड़ों वास्तविक हैंडसेट टोन के कोर्पस पर। सिर्फ सुनने के लिए प्लेयर ले लें, या चिप कैसे काम करता है, यह जानने के लिए आगे पढ़ें।

यह क्यों मौजूद है

Yamaha MA श्रृंखला (YMU762 = MA-3, YMU765 = MA-5) 2000 के दशक के प्रारंभिक फ़ोनों के एक बड़े हिस्से में लगी साउंड चिप थी। यह एक वास्तविक FM सिंथेसाइज़र है, जो एडलिब और सेगा-जेनेसिस युग के OPL/OPN चिप्स का करीबी चचेरा भाई है, जिसे हैंडसेट के लिए छोटा किया गया। इसने जो फ़ाइलें बजाईं, SMAF (.mmf), उनमें एक FM स्कोर और वैकल्पिक ADPCM सैंपल शामिल होते हैं। पॉलीफ़ोनिक रिंगटोन का जन्म यहीं हुआ।

फिर स्मार्टफ़ोन आए, MP3 रिंगटोन ने कब्ज़ा कर लिया, और पूरा फ़ॉर्मेट चुपचाप मर गया। यामाहा ने अपना SDK ऑफ़लाइन कर दिया। और अमीगा या C64 दृश्यों के विपरीत, लगभग किसी ने एमुलेटर नहीं लिखा। जो मौजूद है:

  • MAME में कोई कार्यशील MA-3 कोर नहीं है।
  • यामाहा के अपने उपकरण क्लोज़्ड-सोर्स DLL थे, अब गायब।
  • mmfplay (C, 2004) सबसे आगे बढ़ा और फिर रुक गया: यह MA-3 स्कोर को एक OPL3 एमुलेटर पर मैप करता है "एक प्रूफ ऑफ कॉन्सेप्ट के रूप में", SMF-रूपांतरित फ़ाइलों पर फंस जाता है, कोई लाइसेंस नहीं रखता, और अपने स्वयं के README के अनुसार "बहुत बुरा लगता है"। पिछली बार दो दशक पहले छुआ गया।
  • umjammer/vavi-sound (Java) SMAF को पार्स और बजाता है, और यह एक शानदार व्यवहारिक संदर्भ है, लेकिन यह FM संश्लेषण बिल्कुल नहीं करता: यह टोन को जनरल-मिडी के रूप में पुनः लपेटता है और Java के सिंथ को उनका अनुमान लगाने देता है। और यह Java है।
  • ffmpeg केवल ADPCM पक्ष को पार्स करता है और FM अनुक्रमक को पूरी तरह से अस्वीकार कर देता है।

तो वास्तविक FM चिप का एक नेटिव, अनुमोदक-लाइसेंस प्राप्त, ROM-मुक्त प्लेयर मौजूद नहीं था। यह वही है। पार्सर का हर बाइट और सिंथ का हर ऑपरेटर सार्वजनिक SMAF प्रारूप विवरण और एक हेक्स एडिटर में वास्तविक फ़ाइलों को बहुत देर तक घूरने से लिखा गया था, किसी अन्य प्लेयर की नकल करके नहीं।

यह कैसे काम करता है

इंजन पाँच छोटे टुकड़े हैं, प्रत्येक अपने आप परीक्षण योग्य:

root@kitploit:~
src/
  smaf_file      the MMMD container: big-endian TLV chunks (CNTI/OPDA/MTR/ATR),
                 two score generations (HandyPhone for MA-1/2, Mobile for MA-3/5)
  ma_player      the two event decoders (+ okumura huffman for the packed
                 variant), a scheduler that runs in milliseconds like the chip
                 did, and the render loop that drives a pool of FM voices
  ma_fm_core     the FM DSP: 2-op and 4-op operators, exponential ADSR envelopes,
                 the OPL-style connection algorithms, and its own general-midi
                 approximation patch bank
  smaf_voice     decodes the yamaha voice sysex blobs (VM35 for MA-3/5, VMA for
                 MA-1/2) into FM patches, including the MA-3 bit-packed form
  yamaha_adpcm   the YM2608-family 4-bit adpcm codec, for the sampled voices

टाइमिंग मॉडल सुखद आश्चर्य है: SMAF में कोई टेम्पो इवेंट नहीं है, समय पूरी तरह से मीट्रिक है (इवेंट समय = अवधियों का योग गुणा टाइमबेस, मिलीसेकंड में), इसलिए एक टिक सीधे एक मिलीसेकंड और फिर सैंपल में मैप होता है। FM कोर आपकी आउटपुट दर पर सीधे चलता है, इसलिए सिंथ पथ पर कोई रीसैंपलिंग नहीं है।

ROM प्रश्न (यह पढ़ें)

MA चिप्स में एक छोटा जनरल-मिडी सैंपल ROM भी था ताकि एक रिंगटोन "प्रोग्राम 5 बजाए" कह सके और एक प्रीसेट पियानो मिले। वह ROM यामाहा का है, इसे कभी सार्वजनिक रूप से डंप नहीं किया गया, और यह प्रोजेक्ट इसे शिप नहीं करता, इसे नहीं चाहता, और इसे कभी बंडल नहीं करेगा। यह एक कठोर रेखा है।

इसके बजाय, ma_fm_core में अपना स्वयं का हाथ से बनाया गया FM पैच बैंक है जो ROM के लिए खड़ा है: "प्रोग्राम 5" माँगने वाली फ़ाइल को सही परिवार का एक प्रशंसनीय FM वॉयस मिलता है। यह 2003 के हैंडसेट के बिट-समान नहीं होगा, और यही ईमानदार व्यापार है। आपको मिलता है असली FM स्कोर, असली नोट टाइमिंग, असली ADSR, अपने स्वयं के सिंथ द्वारा बजाया गया। पहचाना गया, और यह बजता है।

जो फ़ाइलें अपने खुद के कस्टम वॉयस रखती हैं (उनमें से बहुत सारी ऐसी हैं) वे बिल्कुल लेखक के अनुसार सुनाई देती हैं, क्योंकि वे वॉयस फ़ाइल में रहते हैं, ROM में नहीं।

त्वरित आरंभ

root@kitploit:~
cmake -B build && cmake --build build
./build/smaf-render your_ringtone.mmf out.wav 30

या लाइब्रेरी को अपने कोड में जोड़ें:

root@kitploit:~
#include "smaf_file.h"
#include "ma_player.h"
using namespace fxchain::smaf;

SmafFile file;
file.parse(bytes.data(), bytes.size());       // MMMD container

MaPlayer player;
player.init(file, 44100);                      // build voices + decode the score

float buf[1024 * 2];                           // interleaved stereo
int frames = player.render(buf, 1024);         // pump the synth

स्थिति

  • आज काम करता है: FM पथ (सभी 8 MA/YMF825 कनेक्शन एल्गोरिदम, लीनियर MULTI, प्रति-ऑपरेटर फ़ीडबैक, एक नियंत्रित मॉड्यूलेशन इंडेक्स और एक हल्का एनालॉग-लाइट आउटपुट फ़िल्टर ताकि यह चिप की तरह गर्म लगे, तीखा नहीं), HandyPhone (MA-1/2) और Mobile (MA-3/5) स्कोर, हफ़मैन-पैक्ड वैरिएंट, कस्टम वॉयस, मल्टी-ट्रैक, पिच बेंड, वॉल्यूम, पैन। प्लस एम्बेडेड PCM वॉयस: यामाहा-ADPCM वेव बैंक डिकोड किया गया है और सैंपल किए गए ड्रम/इंस्ट्रूमेंट वॉयस FM के साथ बजते हैं।
  • अगला: बल्क वॉयस-वेव ब्लॉक (43 79 06 7F 03) जिसमें कुछ शुद्ध ड्रम-किट फ़ाइलें अपने सैंपल रखती हैं; और SD-1-विशिष्ट उच्च तरंगरूप। ROADMAP.md देखें।
  • दायरे से बाहर: ROM टिम्ब्रे (ऊपर देखें), ग्राफ़िक्स चंक, MA-7 स्ट्रीमिंग, और MFi (.mld) सहोदर प्रारूप (एक चचेरा भाई; ROADMAP.md m3 देखें)।

सुरक्षा

यह पार्सर अविश्वसनीय फ़ाइलों को खाने के लिए है, इसलिए इसे रक्षात्मक रूप से लिखा गया है: प्रत्येक चंक की लंबाई वास्तविक बफ़र से क्लैम्प की जाती है, हफ़मैन इनफ़्लेट में नोड + डेप्थ गार्ड और एक आउटपुट सीलिंग है, और इवेंट डिकोडर में इटरेशन + कुल-इवेंट कैप हैं। यह क्रैश होने के बजाय "मान्य SMAF फ़ाइल नहीं" में डिग्रेड होता है। विवरण और रिपोर्टिंग SECURITY.md में।

बक्से में क्या है

src/ इंजन (चार छोटी ट्रांसलेशन यूनिट और एक हेडर-ओनली कोडेक, बिना डिप्स)। example/smaf-render.cpp WAV CLI 100 पंक्तियों से कम में। CMakeLists.txt एक स्टैटिक smaf लिब और उदाहरण बनाता है। बस इतना ही।

लाइसेंस

Apache लाइसेंस 2.0 (LICENSE देखें)। पार्सर और सिंथ मूल कार्य हैं; कोई तृतीय-पक्ष कोड वेंडर नहीं किया गया, और कोई यामाहा ROM या SDK सामग्री शामिल नहीं है। प्रारूप का ज्ञान सार्वजनिक SMAF स्पेक और अवलोकन से आया।

अस्वीकरण

यामाहा से संबद्ध, अधिकृत या समर्थित नहीं। "SMAF" और MA चिप के नाम यामाहा के हैं। यह अंतर-संचालन कार्य है: एक खुले फ़ाइल प्रारूप का एक स्वतंत्र प्लेयर, बिना किसी यामाहा कोड या संरक्षित सैंपल ROM के बनाया गया।


उन सभी को नमस्ते जो अब भी याद करते हैं कि उनकी रिंगटोन कैसी लगती थी।

टूल डाउनलोड करें