כרית ללא ציפה
New member
בעיה: אפקטים בDIRECTSOUND
היי אנחנו מפתחים סינטיסייזר וירטואלי ב C# עם DIRECTSOUND כפרוייקט גמר לתואר הנדסאי. באופן כללי הולך לנו סבבה והסינטי נשמע כמו כלי די מקצועי. התחייבנו בהצעת פרוייקט לשלב אפקטים קוליים - כמו הד, קורוס, פלאנג'ר... מי שמכיר קצת סאונד יודע על מה אני מדבר. בירור קצר העלה שישנם מספר אפקטים מוכנים לשימוש בנויים בתוך הDIRECTSOUND והחלטנו להשתמש בהם. שיוך האפקט לSECONDARYBUFFER מתבצע בצורה הבאה:
היי אנחנו מפתחים סינטיסייזר וירטואלי ב C# עם DIRECTSOUND כפרוייקט גמר לתואר הנדסאי. באופן כללי הולך לנו סבבה והסינטי נשמע כמו כלי די מקצועי. התחייבנו בהצעת פרוייקט לשלב אפקטים קוליים - כמו הד, קורוס, פלאנג'ר... מי שמכיר קצת סאונד יודע על מה אני מדבר. בירור קצר העלה שישנם מספר אפקטים מוכנים לשימוש בנויים בתוך הDIRECTSOUND והחלטנו להשתמש בהם. שיוך האפקט לSECONDARYBUFFER מתבצע בצורה הבאה:
EffectDescription []fx= new EffectDescription[1]; fx[0]=new EffectDescription(); fx[0].GuidEffectClass = DSoundHelper.StandardEchoGuid; sbuffer.SetEffects(fx);
עד כאן הכל עובד יופי. הבעיה נוצרת כשמנסים לשנות את הפרמטרים של האפקטים. למשל ההשעיה של ההד. לפי הMSDN שינוי פרמטרים צריך להתבצע פחות או יותר ככה (תרגמתי מVB לC# מהאתר של MSDN):Microsoft.DirectX.DirectSound.EchoEffect Echofx; EffectsEcho ep; Echofx = (Microsoft.DirectX.DirectSound.EchoEffect)sbuffer.GetEffects(0); ep = Echofx.AllParameters; ep.LeftDelay=100; ep.RightDelay=150;
בהתחלה לפני שעשיתי את הקאסטינג זה בכלל לא עבר קופילציה. הוא צעק שהוא לא יכול להמיר OBJECT לECHOEFFECT. עכשיו זה כן עובר קומפילציה אבל לא משפיע בכלל על האפקט (בדוגמא זו ניסיתי לקצר את ההשעיה של ההד בצורה משמעותית, אם זה היה מתבצע היה אפשר לשמוע את זה בצורה ברורה) יש למישהו פתרון? שמתי את החומר בMSDN על הנושא ב"כתובות אינטרנט נלוות"