हम्म, मजेदार समस्या।
दरअसल, मैं इसे कंपोजिट के साथ कमांड पैटर्न में बदलने का लुत्फ उठाऊंगा। यह सामान्य ओओ दृष्टिकोण को अपने सिर पर बदल रहा है, क्योंकि आप एक अर्थ में हैं जो संज्ञाओं के बजाय मॉडलिंग ऑब्जेक्ट क्रियाएं बनाते हैं। यह इस तरह होगा:
एक नोट एक विधि है, play(), and a ctor taking
लंबाई and
स्वर 'के साथ एक वर्ग है।
आपको एक उपकरण की आवश्यकता है जो synth के व्यवहार को परिभाषित करता है: timbre, हमले, और इसी तरह।
फिर आप एक स्कोर है, जो एक TimeSignature है है, और एक समग्र उपाय युक्त पैटर्न है; उपाय में नोट्स होते हैं।
वास्तव में खेल रहे हैं यह कुछ अन्य बातों के, पुनर्प्रसारण और Codas की तरह है, जो अन्य कंटेनरों हैं व्याख्या का मतलब है। इसे खेलने के लिए, आप समग्र की पदानुक्रमिक संरचना की व्याख्या करते हैं, एक कतार में एक नोट डालना; चूंकि नोट्स tempi के आधार पर कतार के माध्यम से स्थानांतरित होते हैं, प्रत्येक नोट में play()
विधि कहा जाता है।
हमम, उसमें उलटा हो सकता है; प्रत्येक नोट को उपकरण के इनपुट के रूप में दिया जाता है, जो आवश्यक रूप से तरंग रूप को संश्लेषित करके इसका अर्थ देता है। यह आपकी मूल योजना की तरह कुछ वापस आता है।
अपघटन करने के लिए एक और दृष्टिकोण Parnas 'कानून लागू करने के लिए है: आप गुप्त स्थानों पर जहां आवश्यकताओं को बदल सकता है रखने के लिए विघटित। लेकिन मुझे लगता है कि एक समान अपघटन के साथ समाप्त होता है; आप समय हस्ताक्षर और ट्यूनिंग बदल सकते हैं, आप उपकरण बदल सकते हैं --- यदि आप इसे वायलिन, पियानो या मारिम्बा पर खेलते हैं तो नोट परवाह नहीं है।
दिलचस्प समस्या।
स्रोत
2009-01-22 04:00:48
यह एक बहुत ही रोचक कार्यक्रम हो सकता है। यदि आप अपना "स्कोर" ऑब्जेक्ट लेते हैं और फिर लागू संगीत सिद्धांत "नियम" (मेरे पास संगीत सिद्धांत में नाबालिग है) तो आप संभावित रूप से कुछ प्रकार के संगीत जनरेटर बना सकते हैं ... साफ होगा ... मुझे यकीन है कि यह हो गया है । – Nope
@ कैसी: यह दस लाख बार किया गया है, लेकिन कभी भी अच्छा नहीं। – MusiGenesis
@MusiGenesis ... यही मुझे लगा। ओह ठीक है, यह अभी भी कोशिश करने के लिए मजेदार होगा। – Nope