Previous 199869 Revisions Next

r20637 Thursday 31st January, 2013 at 15:46:45 UTC by Andrew Gardner
Modernize the Volume and RC filter sound devices. [Andrew Gardner]
[src/emu/sound]flt_rc.c flt_rc.h flt_vol.c flt_vol.h
[src/mame/audio]scramble.c timeplt.c
[src/mame/drivers]darius.c ddribble.c galaxold.c junofrst.c lockon.c megazone.c ninjaw.c othunder.c scramble.c taito_z.c tp84.c warriorb.c xexex.c
[src/mame/includes]darius.h lockon.h ninjaw.h othunder.h warriorb.h xexex.h

trunk/src/mame/includes/darius.h
r20636r20637
44
55*************************************************************************/
66
7#include <sound/flt_vol.h>
8
79#define DARIUS_VOL_MAX    (3*2 + 2)
810#define DARIUS_PAN_MAX    (2 + 2 + 1)   /* FM 2port + PSG 2port + DA 1port */
911
r20636r20637
4446   device_t *m_mscreen;
4547   device_t *m_rscreen;
4648
47   device_t *m_filter0_0l;
48   device_t *m_filter0_0r;
49   device_t *m_filter0_1l;
50   device_t *m_filter0_1r;
51   device_t *m_filter0_2l;
52   device_t *m_filter0_2r;
53   device_t *m_filter0_3l;
54   device_t *m_filter0_3r;
55   device_t *m_filter1_0l;
56   device_t *m_filter1_0r;
57   device_t *m_filter1_1l;
58   device_t *m_filter1_1r;
59   device_t *m_filter1_2l;
60   device_t *m_filter1_2r;
61   device_t *m_filter1_3l;
62   device_t *m_filter1_3r;
63   device_t *m_msm5205_l;
64   device_t *m_msm5205_r;
49   filter_volume_device *m_filter0_0l;
50   filter_volume_device *m_filter0_0r;
51   filter_volume_device *m_filter0_1l;
52   filter_volume_device *m_filter0_1r;
53   filter_volume_device *m_filter0_2l;
54   filter_volume_device *m_filter0_2r;
55   filter_volume_device *m_filter0_3l;
56   filter_volume_device *m_filter0_3r;
57   filter_volume_device *m_filter1_0l;
58   filter_volume_device *m_filter1_0r;
59   filter_volume_device *m_filter1_1l;
60   filter_volume_device *m_filter1_1r;
61   filter_volume_device *m_filter1_2l;
62   filter_volume_device *m_filter1_2r;
63   filter_volume_device *m_filter1_3l;
64   filter_volume_device *m_filter1_3r;
65   filter_volume_device *m_msm5205_l;
66   filter_volume_device *m_msm5205_r;
6567   DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
6668   DECLARE_WRITE16_MEMBER(darius_watchdog_w);
6769   DECLARE_READ16_MEMBER(darius_ioc_r);
trunk/src/mame/includes/xexex.h
r20636r20637
55*************************************************************************/
66
77#include <video/k053250.h>
8#include <sound/flt_vol.h>
89
910class xexex_state : public driver_device
1011{
r20636r20637
3839   cpu_device *m_maincpu;
3940   cpu_device *m_audiocpu;
4041   device_t *m_k054539;
41   device_t *m_filter1l;
42   device_t *m_filter1r;
43   device_t *m_filter2l;
44   device_t *m_filter2r;
42   filter_volume_device *m_filter1l;
43   filter_volume_device *m_filter1r;
44   filter_volume_device *m_filter2l;
45   filter_volume_device *m_filter2r;
4546   device_t *m_k056832;
4647   device_t *m_k053246;
4748   k053250_t *m_k053250;
trunk/src/mame/includes/lockon.h
r20636r20637
44
55*************************************************************************/
66
7#include <sound/flt_vol.h>
8
79/* Calculated from CRT controller writes */
810#define PIXEL_CLOCK            (XTAL_21MHz / 3)
911#define FRAMEBUFFER_CLOCK      XTAL_10MHz
r20636r20637
6870   cpu_device *m_audiocpu;
6971   device_t *m_ground;
7072   device_t *m_object;
71   device_t *m_f2203_1l;
72   device_t *m_f2203_2l;
73   device_t *m_f2203_3l;
74   device_t *m_f2203_1r;
75   device_t *m_f2203_2r;
76   device_t *m_f2203_3r;
73   filter_volume_device *m_f2203_1l;
74   filter_volume_device *m_f2203_2l;
75   filter_volume_device *m_f2203_3l;
76   filter_volume_device *m_f2203_1r;
77   filter_volume_device *m_f2203_2r;
78   filter_volume_device *m_f2203_3r;
7779   DECLARE_READ16_MEMBER(lockon_crtc_r);
7880   DECLARE_WRITE16_MEMBER(lockon_crtc_w);
7981   DECLARE_WRITE16_MEMBER(lockon_char_w);
trunk/src/mame/includes/ninjaw.h
r20636r20637
44
55*************************************************************************/
66
7#include <sound/flt_vol.h>
8
79class ninjaw_state : public driver_device
810{
911public:
r20636r20637
3032   device_t *m_lscreen;
3133   device_t *m_mscreen;
3234   device_t *m_rscreen;
33   device_t *m_2610_1l;
34   device_t *m_2610_1r;
35   device_t *m_2610_2l;
36   device_t *m_2610_2r;
35   filter_volume_device *m_2610_1l;
36   filter_volume_device *m_2610_1r;
37   filter_volume_device *m_2610_2l;
38   filter_volume_device *m_2610_2r;
3739   DECLARE_WRITE16_MEMBER(cpua_ctrl_w);
3840   DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
3941   DECLARE_WRITE16_MEMBER(ninjaw_sound_w);
trunk/src/mame/includes/warriorb.h
r20636r20637
44
55*************************************************************************/
66
7#include <sound/flt_vol.h>
8
79class warriorb_state : public driver_device
810{
911public:
r20636r20637
2628   device_t *m_tc0100scn_2;
2729   device_t *m_lscreen;
2830   device_t *m_rscreen;
29   device_t *m_2610_1l;
30   device_t *m_2610_1r;
31   device_t *m_2610_2l;
32   device_t *m_2610_2r;
31   filter_volume_device *m_2610_1l;
32   filter_volume_device *m_2610_1r;
33   filter_volume_device *m_2610_2l;
34   filter_volume_device *m_2610_2r;
3335   DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
3436   DECLARE_WRITE16_MEMBER(warriorb_sound_w);
3537   DECLARE_READ16_MEMBER(warriorb_sound_r);
trunk/src/mame/includes/othunder.h
r20636r20637
55*************************************************************************/
66
77#include "machine/eeprom.h"
8#include <sound/flt_vol.h>
89
910struct othunder_tempsprite
1011{
r20636r20637
4445   device_t *m_tc0100scn;
4546   device_t *m_tc0110pcr;
4647   device_t *m_tc0140syt;
47   device_t *m_2610_0l;
48   device_t *m_2610_0r;
49   device_t *m_2610_1l;
50   device_t *m_2610_1r;
51   device_t *m_2610_2l;
52   device_t *m_2610_2r;
48   filter_volume_device *m_2610_0l;
49   filter_volume_device *m_2610_0r;
50   filter_volume_device *m_2610_1l;
51   filter_volume_device *m_2610_1r;
52   filter_volume_device *m_2610_2l;
53   filter_volume_device *m_2610_2r;
5354   DECLARE_WRITE16_MEMBER(irq_ack_w);
5455   DECLARE_WRITE16_MEMBER(othunder_tc0220ioc_w);
5556   DECLARE_READ16_MEMBER(othunder_tc0220ioc_r);
trunk/src/mame/drivers/galaxold.c
r20636r20637
368368#include "sound/ay8910.h"
369369#include "sound/sn76496.h"
370370#include "sound/dac.h"
371#include "sound/flt_rc.h"
372371#include "audio/galaxian.h"
373372#include "includes/galaxold.h"
374373
trunk/src/mame/drivers/warriorb.c
r20636r20637
195195
196196WRITE8_MEMBER(warriorb_state::warriorb_pancontrol)
197197{
198   device_t *flt = NULL;
198   filter_volume_device *flt = NULL;
199199   offset &= 3;
200200
201201   switch (offset)
r20636r20637
208208
209209   m_pandata[offset] = (data << 1) + data;   /* original volume*3 */
210210   //popmessage(" pan %02x %02x %02x %02x", m_pandata[0], m_pandata[1], m_pandata[2], m_pandata[3] );
211   flt_volume_set_volume(flt, m_pandata[offset] / 100.0);
211   flt->flt_volume_set_volume(m_pandata[offset] / 100.0);
212212}
213213
214214
r20636r20637
517517   m_lscreen = machine().device("lscreen");
518518   m_rscreen = machine().device("rscreen");
519519
520   m_2610_1l = machine().device("2610.1.l");
521   m_2610_1r = machine().device("2610.1.r");
522   m_2610_2l = machine().device("2610.2.l");
523   m_2610_2r = machine().device("2610.2.r");
520   m_2610_1l = machine().device<filter_volume_device>("2610.1.l");
521   m_2610_1r = machine().device<filter_volume_device>("2610.1.r");
522   m_2610_2l = machine().device<filter_volume_device>("2610.2.l");
523   m_2610_2r = machine().device<filter_volume_device>("2610.2.r");
524524
525525   save_item(NAME(m_banknum));
526526   save_item(NAME(m_pandata));
r20636r20637
585585   MCFG_SOUND_ROUTE(2, "2610.2.l", 1.0)
586586   MCFG_SOUND_ROUTE(2, "2610.2.r", 1.0)
587587
588   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
588   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
589589   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
590   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
590   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
591591   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
592   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
592   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
593593   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
594   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
594   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
595595   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
596596
597597   MCFG_TC0140SYT_ADD("tc0140syt", warriorb_tc0140syt_intf)
r20636r20637
648648   MCFG_SOUND_ROUTE(2, "2610.2.l", 1.0)
649649   MCFG_SOUND_ROUTE(2, "2610.2.r", 1.0)
650650
651   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
651   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
652652   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
653   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
653   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
654654   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
655   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
655   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
656656   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
657   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
657   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
658658   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
659659
660660   MCFG_TC0140SYT_ADD("tc0140syt", warriorb_tc0140syt_intf)
trunk/src/mame/drivers/lockon.c
r20636r20637
405405   double lgain = gains[data & 0xf];
406406   double rgain = gains[data >> 4];
407407
408   flt_volume_set_volume(m_f2203_1l, lgain);
409   flt_volume_set_volume(m_f2203_2l, lgain);
410   flt_volume_set_volume(m_f2203_3l, lgain);
408   m_f2203_1l->flt_volume_set_volume(lgain);
409   m_f2203_2l->flt_volume_set_volume(lgain);
410   m_f2203_3l->flt_volume_set_volume(lgain);
411411
412   flt_volume_set_volume(m_f2203_1r, rgain);
413   flt_volume_set_volume(m_f2203_2r, rgain);
414   flt_volume_set_volume(m_f2203_3r, rgain);
412   m_f2203_1r->flt_volume_set_volume(rgain);
413   m_f2203_2r->flt_volume_set_volume(rgain);
414   m_f2203_3r->flt_volume_set_volume(rgain);
415415}
416416
417417static void ym2203_irq(device_t *device, int irq)
r20636r20637
456456   m_audiocpu = machine().device<cpu_device>("audiocpu");
457457   m_ground = machine().device("ground");
458458   m_object = machine().device("object");
459   m_f2203_1l = machine().device("f2203.1l");
460   m_f2203_2l = machine().device("f2203.2l");
461   m_f2203_3l = machine().device("f2203.3l");
462   m_f2203_1r = machine().device("f2203.1r");
463   m_f2203_2r = machine().device("f2203.2r");
464   m_f2203_3r = machine().device("f2203.3r");
459   m_f2203_1l = machine().device<filter_volume_device>("f2203.1l");
460   m_f2203_2l = machine().device<filter_volume_device>("f2203.2l");
461   m_f2203_3l = machine().device<filter_volume_device>("f2203.3l");
462   m_f2203_1r = machine().device<filter_volume_device>("f2203.1r");
463   m_f2203_2r = machine().device<filter_volume_device>("f2203.2r");
464   m_f2203_3r = machine().device<filter_volume_device>("f2203.3r");
465465
466466   save_item(NAME(m_ground_ctrl));
467467   save_item(NAME(m_scroll_h));
r20636r20637
544544   MCFG_SOUND_ROUTE(3, "f2203.3l", 1.0)
545545   MCFG_SOUND_ROUTE(3, "f2203.3r", 1.0)
546546
547   MCFG_SOUND_ADD("f2203.1l", FILTER_VOLUME, 0)
547   MCFG_FILTER_VOLUME_ADD("f2203.1l", 0)
548548   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
549   MCFG_SOUND_ADD("f2203.1r", FILTER_VOLUME, 0)
549   MCFG_FILTER_VOLUME_ADD("f2203.1r", 0)
550550   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
551   MCFG_SOUND_ADD("f2203.2l", FILTER_VOLUME, 0)
551   MCFG_FILTER_VOLUME_ADD("f2203.2l", 0)
552552   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
553   MCFG_SOUND_ADD("f2203.2r", FILTER_VOLUME, 0)
553   MCFG_FILTER_VOLUME_ADD("f2203.2r", 0)
554554   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
555   MCFG_SOUND_ADD("f2203.3l", FILTER_VOLUME, 0)
555   MCFG_FILTER_VOLUME_ADD("f2203.3l", 0)
556556   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
557   MCFG_SOUND_ADD("f2203.3r", FILTER_VOLUME, 0)
557   MCFG_FILTER_VOLUME_ADD("f2203.3r", 0)
558558   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
559559MACHINE_CONFIG_END
560560
trunk/src/mame/drivers/megazone.c
r20636r20637
5151         C += 220000;    /* 220000pF = 0.22uF */
5252
5353      data >>= 2;
54      filter_rc_set_RC(machine().device(fltname[i]),FLT_RC_LOWPASS,1000,2200,200,CAP_P(C));
54      dynamic_cast<filter_rc_device*>(machine().device(fltname[i]))->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 200, CAP_P(C));
5555   }
5656}
5757
r20636r20637
289289   MCFG_DAC_ADD("dac")
290290   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
291291
292   MCFG_SOUND_ADD("filter.0.0", FILTER_RC, 0)
292   MCFG_FILTER_RC_ADD("filter.0.0", 0)
293293   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
294   MCFG_SOUND_ADD("filter.0.1", FILTER_RC, 0)
294   MCFG_FILTER_RC_ADD("filter.0.1", 0)
295295   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
296   MCFG_SOUND_ADD("filter.0.2", FILTER_RC, 0)
296   MCFG_FILTER_RC_ADD("filter.0.2", 0)
297297   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
298298MACHINE_CONFIG_END
299299
trunk/src/mame/drivers/othunder.c
r20636r20637
424424      because we are using the AY-3-8910 emulation. */
425425   volr = (m_pan[0] + m_pan[2]) * 100 / (2 * 0x1f);
426426   voll = (m_pan[1] + m_pan[3]) * 100 / (2 * 0x1f);
427   flt_volume_set_volume(m_2610_0l, voll / 100.0);
428   flt_volume_set_volume(m_2610_0r, volr / 100.0);
427   m_2610_0l->flt_volume_set_volume(voll / 100.0);
428   m_2610_0r->flt_volume_set_volume(volr / 100.0);
429429
430430   /* CH1 */
431431   volr = m_pan[0] * 100 / 0x1f;
432432   voll = m_pan[1] * 100 / 0x1f;
433   flt_volume_set_volume(m_2610_1l, voll / 100.0);
434   flt_volume_set_volume(m_2610_1r, volr / 100.0);
433   m_2610_1l->flt_volume_set_volume(voll / 100.0);
434   m_2610_1r->flt_volume_set_volume(volr / 100.0);
435435
436436   /* CH2 */
437437   volr = m_pan[2] * 100 / 0x1f;
438438   voll = m_pan[3] * 100 / 0x1f;
439   flt_volume_set_volume(m_2610_2l, voll / 100.0);
440   flt_volume_set_volume(m_2610_2r, volr / 100.0);
439   m_2610_2l->flt_volume_set_volume(voll / 100.0);
440   m_2610_2r->flt_volume_set_volume(volr / 100.0);
441441}
442442
443443
r20636r20637
674674   m_tc0100scn = machine().device("tc0100scn");
675675   m_tc0110pcr = machine().device("tc0110pcr");
676676   m_tc0140syt = machine().device("tc0140syt");
677   m_2610_0l = machine().device("2610.0l");
678   m_2610_0r = machine().device("2610.0r");
679   m_2610_1l = machine().device("2610.1l");
680   m_2610_1r = machine().device("2610.1r");
681   m_2610_2l = machine().device("2610.2l");
682   m_2610_2r = machine().device("2610.2r");
677   m_2610_0l = machine().device<filter_volume_device>("2610.0l");
678   m_2610_0r = machine().device<filter_volume_device>("2610.0r");
679   m_2610_1l = machine().device<filter_volume_device>("2610.1l");
680   m_2610_1r = machine().device<filter_volume_device>("2610.1r");
681   m_2610_2l = machine().device<filter_volume_device>("2610.2l");
682   m_2610_2r = machine().device<filter_volume_device>("2610.2r");
683683
684684   save_item(NAME(m_vblank_irq));
685685   save_item(NAME(m_ad_irq));
r20636r20637
738738   MCFG_SOUND_ROUTE(2, "2610.2l", 1.0)
739739   MCFG_SOUND_ROUTE(2, "2610.2r", 1.0)
740740
741   MCFG_SOUND_ADD("2610.0l", FILTER_VOLUME, 0)
741   MCFG_FILTER_VOLUME_ADD("2610.0l", 0)
742742   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
743   MCFG_SOUND_ADD("2610.0r", FILTER_VOLUME, 0)
743   MCFG_FILTER_VOLUME_ADD("2610.0r", 0)
744744   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
745   MCFG_SOUND_ADD("2610.1l", FILTER_VOLUME, 0)
745   MCFG_FILTER_VOLUME_ADD("2610.1l", 0)
746746   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
747   MCFG_SOUND_ADD("2610.1r", FILTER_VOLUME, 0)
747   MCFG_FILTER_VOLUME_ADD("2610.1r", 0)
748748   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
749   MCFG_SOUND_ADD("2610.2l", FILTER_VOLUME, 0)
749   MCFG_FILTER_VOLUME_ADD("2610.2l", 0)
750750   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
751   MCFG_SOUND_ADD("2610.2r", FILTER_VOLUME, 0)
751   MCFG_FILTER_VOLUME_ADD("2610.2r", 0)
752752   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
753753
754754   MCFG_TC0140SYT_ADD("tc0140syt", othunder_tc0140syt_intf)
trunk/src/mame/drivers/ddribble.c
r20636r20637
9898   vlm5030_set_rom(device, &SPEECH_ROM[data & 0x08 ? 0x10000 : 0]);
9999
100100   /* b2 : SSG-C rc filter enable */
101   filter_rc_set_RC(m_filter3, FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */
101   dynamic_cast<filter_rc_device*>(m_filter3)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */
102102
103103   /* b1 : SSG-B rc filter enable */
104   filter_rc_set_RC(m_filter2, FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */
104   dynamic_cast<filter_rc_device*>(m_filter2)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */
105105
106106   /* b0 : SSG-A rc filter enable */
107   filter_rc_set_RC(m_filter1, FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */
107   dynamic_cast<filter_rc_device*>(m_filter1)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */
108108}
109109
110110
r20636r20637
320320   MCFG_SOUND_CONFIG(vlm5030_config)
321321   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
322322
323   MCFG_SOUND_ADD("filter1", FILTER_RC, 0)
323   MCFG_FILTER_RC_ADD("filter1", 0)
324324   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
325   MCFG_SOUND_ADD("filter2", FILTER_RC, 0)
325   MCFG_FILTER_RC_ADD("filter2", 0)
326326   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
327   MCFG_SOUND_ADD("filter3", FILTER_RC, 0)
327   MCFG_FILTER_RC_ADD("filter3", 0)
328328   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
329329MACHINE_CONFIG_END
330330
trunk/src/mame/drivers/tp84.c
r20636r20637
9898   C = 0;
9999   if (offset & 0x008) C +=  47000;    /*  47000pF = 0.047uF */
100100   if (offset & 0x010) C += 470000;    /* 470000pF = 0.47uF */
101   filter_rc_set_RC(machine().device("filter1"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
101   dynamic_cast<filter_rc_device*>(machine().device("filter1"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
102102
103103   /* 76489 #1 (optional) */
104104   C = 0;
105105   if (offset & 0x020) C +=  47000;    /*  47000pF = 0.047uF */
106106   if (offset & 0x040) C += 470000;    /* 470000pF = 0.47uF */
107//  filter_rc_set_RC(machine().device("filter2"),1000,2200,1000,C);
107        //  dynamic_cast<filter_rc_device*>(machine().device("filter2"))->filter_rc_set_RC(,1000,2200,1000,C);
108108
109109   /* 76489 #2 */
110110   C = 0;
111111   if (offset & 0x080) C += 470000;    /* 470000pF = 0.47uF */
112   filter_rc_set_RC(machine().device("filter2"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
112   dynamic_cast<filter_rc_device*>(machine().device("filter2"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
113113
114114   /* 76489 #3 */
115115   C = 0;
116116   if (offset & 0x100) C += 470000;    /* 470000pF = 0.47uF */
117   filter_rc_set_RC(machine().device("filter3"),FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
117   dynamic_cast<filter_rc_device*>(machine().device("filter3"))->filter_rc_set_RC(FLT_RC_LOWPASS,1000,2200,1000,CAP_P(C));
118118}
119119
120120WRITE8_MEMBER(tp84_state::tp84_sh_irqtrigger_w)
r20636r20637
346346   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter3", 0.75)
347347   MCFG_SOUND_CONFIG(psg_intf)
348348
349   MCFG_SOUND_ADD("filter1", FILTER_RC, 0)
349   MCFG_FILTER_RC_ADD("filter1", 0)
350350   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
351   MCFG_SOUND_ADD("filter2", FILTER_RC, 0)
351   MCFG_FILTER_RC_ADD("filter2", 0)
352352   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
353   MCFG_SOUND_ADD("filter3", FILTER_RC, 0)
353   MCFG_FILTER_RC_ADD("filter3", 0)
354354   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
355355MACHINE_CONFIG_END
356356
trunk/src/mame/drivers/scramble.c
r20636r20637
3030#include "cpu/s2650/s2650.h"
3131#include "sound/ay8910.h"
3232#include "sound/dac.h"
33#include "sound/flt_rc.h"
3433#include "machine/7474.h"
3534#include "machine/i8255.h"
3635#include "includes/scramble.h"
trunk/src/mame/drivers/junofrst.c
r20636r20637
230230         C += 220000;    /* 220000pF = 0.22uF */
231231
232232      data >>= 2;
233      filter_rc_set_RC(filter[i], FLT_RC_LOWPASS, 1000, 2200, 200, CAP_P(C));
233      dynamic_cast<filter_rc_device*>(filter[i])->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 200, CAP_P(C));
234234   }
235235}
236236
r20636r20637
453453   MCFG_DAC_ADD("dac")
454454   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
455455
456   MCFG_SOUND_ADD("filter.0.0", FILTER_RC, 0)
456   MCFG_FILTER_RC_ADD("filter.0.0", 0)
457457   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
458   MCFG_SOUND_ADD("filter.0.1", FILTER_RC, 0)
458   MCFG_FILTER_RC_ADD("filter.0.1", 0)
459459   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
460   MCFG_SOUND_ADD("filter.0.2", FILTER_RC, 0)
460   MCFG_FILTER_RC_ADD("filter.0.2", 0)
461461   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
462462MACHINE_CONFIG_END
463463
trunk/src/mame/drivers/taito_z.c
r20636r20637
14751475WRITE8_MEMBER(taitoz_state::taitoz_pancontrol)
14761476{
14771477   static const char *const fltname[] = { "2610.1.r", "2610.1.l", "2610.2.r", "2610.2.l" };
1478   flt_volume_set_volume(machine().device(fltname[offset & 3]), data / 255.0f);
1478   dynamic_cast<filter_volume_device*>(machine().device(fltname[offset & 3]))->flt_volume_set_volume(data / 255.0f);
14791479}
14801480
14811481WRITE16_MEMBER(taitoz_state::spacegun_pancontrol)
r20636r20637
31223122   MCFG_SOUND_ROUTE(2, "2610.2.l", 2.0)
31233123   MCFG_SOUND_ROUTE(2, "2610.2.r", 2.0)
31243124
3125   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3125   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
31263126   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3127   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3127   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
31283128   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
3129   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3129   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
31303130   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3131   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3131   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
31323132   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
31333133
31343134   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
31843184   MCFG_SOUND_ROUTE(2, "2610.2.l", 1.0)
31853185   MCFG_SOUND_ROUTE(2, "2610.2.r", 1.0)
31863186
3187   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3187   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
31883188   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3189   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3189   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
31903190   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
3191   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3191   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
31923192   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3193   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3193   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
31943194   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
31953195
31963196   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
32473247   MCFG_SOUND_ROUTE(2, "2610.2.l", 20.0)
32483248   MCFG_SOUND_ROUTE(2, "2610.2.r", 20.0)
32493249
3250   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3250   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
32513251   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3252   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3252   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
32533253   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3254   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3254   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
32553255   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3256   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3256   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
32573257   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
32583258
32593259   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
33063306   MCFG_SOUND_ROUTE(2, "2610.2.l", 28.0)
33073307   MCFG_SOUND_ROUTE(2, "2610.2.r", 28.0)
33083308
3309   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3309   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
33103310   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3311   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3311   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
33123312   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3313   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3313   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
33143314   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3315   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3315   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
33163316   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
33173317
33183318   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
33773377   MCFG_SOUND_ROUTE(2, "2610.2.l", 2.0)
33783378   MCFG_SOUND_ROUTE(2, "2610.2.r", 2.0)
33793379
3380   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3380   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
33813381   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3382   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3382   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
33833383   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3384   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3384   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
33853385   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3386   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3386   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
33873387   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
33883388
33893389   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
34413441   MCFG_SOUND_ROUTE(2, "2610.2.l", 2.0)
34423442   MCFG_SOUND_ROUTE(2, "2610.2.r", 2.0)
34433443
3444   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3444   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
34453445   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3446   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3446   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
34473447   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
3448   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3448   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
34493449   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rear", 1.0)
3450   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3450   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
34513451   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "front", 1.0)
34523452
34533453   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
35043504   MCFG_SOUND_ROUTE(2, "2610.2.l", 2.0)
35053505   MCFG_SOUND_ROUTE(2, "2610.2.r", 2.0)
35063506
3507   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3507   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
35083508   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3509   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3509   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
35103510   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3511   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3511   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
35123512   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3513   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3513   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
35143514   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
35153515
35163516   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
35633563   MCFG_SOUND_ROUTE(2, "2610.2.l", 8.0)
35643564   MCFG_SOUND_ROUTE(2, "2610.2.r", 8.0)
35653565
3566   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3566   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
35673567   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3568   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3568   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
35693569   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3570   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3570   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
35713571   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3572   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3572   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
35733573   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
35743574
35753575   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
36253625   MCFG_SOUND_ROUTE(2, "2610.2.l", 8.0)
36263626   MCFG_SOUND_ROUTE(2, "2610.2.r", 8.0)
36273627
3628   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3628   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
36293629   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3630   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3630   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
36313631   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3632   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3632   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
36333633   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3634   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3634   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
36353635   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
36363636
36373637   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
r20636r20637
36873687   MCFG_SOUND_ROUTE(2, "2610.2.l", 8.0)
36883688   MCFG_SOUND_ROUTE(2, "2610.2.r", 8.0)
36893689
3690   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
3690   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
36913691   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3692   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
3692   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
36933693   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
3694   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
3694   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
36953695   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
3696   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
3696   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
36973697   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
36983698
36993699   MCFG_TC0140SYT_ADD("tc0140syt", taitoz_tc0140syt_intf)
trunk/src/mame/drivers/ninjaw.c
r20636r20637
389389
390390WRITE8_MEMBER(ninjaw_state::ninjaw_pancontrol)
391391{
392   device_t *flt = NULL;
392   filter_volume_device *flt = NULL;
393393   offset &= 3;
394394
395395   switch (offset)
r20636r20637
402402
403403   m_pandata[offset] = (float)data * (100.f / 255.0f);
404404   //popmessage(" pan %02x %02x %02x %02x", m_pandata[0], m_pandata[1], m_pandata[2], m_pandata[3] );
405   flt_volume_set_volume(flt, m_pandata[offset] / 100.0);
405   flt->flt_volume_set_volume(m_pandata[offset] / 100.0);
406406}
407407
408408
r20636r20637
811811   m_mscreen = machine().device("mscreen");
812812   m_rscreen = machine().device("rscreen");
813813
814   m_2610_1l = machine().device("2610.1.l");
815   m_2610_1r = machine().device("2610.1.r");
816   m_2610_2l = machine().device("2610.2.l");
817   m_2610_2r = machine().device("2610.2.r");
814   m_2610_1l = machine().device<filter_volume_device>("2610.1.l");
815   m_2610_1r = machine().device<filter_volume_device>("2610.1.r");
816   m_2610_2l = machine().device<filter_volume_device>("2610.2.l");
817   m_2610_2r = machine().device<filter_volume_device>("2610.2.r");
818818
819819   save_item(NAME(m_cpua_ctrl));
820820   save_item(NAME(m_banknum));
r20636r20637
897897   MCFG_SOUND_ROUTE(2, "2610.2.l", 1.0)
898898   MCFG_SOUND_ROUTE(2, "2610.2.r", 1.0)
899899
900   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
900   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
901901   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
902   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
902   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
903903   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
904   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
904   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
905905   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
906   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
906   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
907907   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
908908
909909//  MCFG_SOUND_ADD("subwoofer", SUBWOOFER, 0)
r20636r20637
977977   MCFG_SOUND_ROUTE(2, "2610.2.l", 1.0)
978978   MCFG_SOUND_ROUTE(2, "2610.2.r", 1.0)
979979
980   MCFG_SOUND_ADD("2610.1.l", FILTER_VOLUME, 0)
980   MCFG_FILTER_VOLUME_ADD("2610.1.l", 0)
981981   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
982   MCFG_SOUND_ADD("2610.1.r", FILTER_VOLUME, 0)
982   MCFG_FILTER_VOLUME_ADD("2610.1.r", 0)
983983   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
984   MCFG_SOUND_ADD("2610.2.l", FILTER_VOLUME, 0)
984   MCFG_FILTER_VOLUME_ADD("2610.2.l", 0)
985985   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
986   MCFG_SOUND_ADD("2610.2.r", FILTER_VOLUME, 0)
986   MCFG_FILTER_VOLUME_ADD("2610.2.r", 0)
987987   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
988988
989989//  MCFG_SOUND_ADD("subwoofer", SUBWOOFER, 0)
trunk/src/mame/drivers/xexex.c
r20636r20637
245245static void ym_set_mixing(device_t *device, double left, double right)
246246{
247247   xexex_state *state = device->machine().driver_data<xexex_state>();
248   flt_volume_set_volume(state->m_filter1l, (71.0 * left) / 55.0);
249   flt_volume_set_volume(state->m_filter1r, (71.0 * right) / 55.0);
250   flt_volume_set_volume(state->m_filter2l, (71.0 * left) / 55.0);
251   flt_volume_set_volume(state->m_filter2r, (71.0 * right) / 55.0);
248   state->m_filter1l->flt_volume_set_volume((71.0 * left) / 55.0);
249   state->m_filter1r->flt_volume_set_volume((71.0 * right) / 55.0);
250   state->m_filter2l->flt_volume_set_volume((71.0 * left) / 55.0);
251   state->m_filter2r->flt_volume_set_volume((71.0 * right) / 55.0);
252252}
253253
254254TIMER_CALLBACK_MEMBER(xexex_state::dmaend_callback)
r20636r20637
462462   m_k056832 = machine().device("k056832");
463463   m_k054338 = machine().device("k054338");
464464   m_k054539 = machine().device("k054539");
465   m_filter1l = machine().device("filter1l");
466   m_filter1r = machine().device("filter1r");
467   m_filter2l = machine().device("filter2l");
468   m_filter2r = machine().device("filter2r");
465   m_filter1l = machine().device<filter_volume_device>("filter1l");
466   m_filter1r = machine().device<filter_volume_device>("filter1r");
467   m_filter2l = machine().device<filter_volume_device>("filter2l");
468   m_filter2r = machine().device<filter_volume_device>("filter2r");
469469
470470   save_item(NAME(m_cur_alpha));
471471   save_item(NAME(m_sprite_colorbase));
r20636r20637
555555   MCFG_SOUND_ROUTE(1, "lspeaker", 1.0)
556556   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
557557
558   MCFG_SOUND_ADD("filter1l", FILTER_VOLUME, 0)
558   MCFG_FILTER_VOLUME_ADD("filter1l", 0)
559559   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
560   MCFG_SOUND_ADD("filter1r", FILTER_VOLUME, 0)
560   MCFG_FILTER_VOLUME_ADD("filter1r", 0)
561561   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
562   MCFG_SOUND_ADD("filter2l", FILTER_VOLUME, 0)
562   MCFG_FILTER_VOLUME_ADD("filter2l", 0)
563563   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
564   MCFG_SOUND_ADD("filter2r", FILTER_VOLUME, 0)
564   MCFG_FILTER_VOLUME_ADD("filter2r", 0)
565565   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
566566MACHINE_CONFIG_END
567567
trunk/src/mame/drivers/darius.c
r20636r20637
307307   int right = ((0xff - state->m_pan[0]) * state->m_vol[6]) >> 8;
308308
309309   if (state->m_filter0_3l != NULL)
310      flt_volume_set_volume(state->m_filter0_3l, left / 100.0);
310      state->m_filter0_3l->flt_volume_set_volume(left / 100.0);
311311   if (state->m_filter0_3r != NULL)
312      flt_volume_set_volume(state->m_filter0_3r, right / 100.0); /* FM #0 */
312      state->m_filter0_3r->flt_volume_set_volume(right / 100.0); /* FM #0 */
313313}
314314
315315static void update_fm1( running_machine &machine )
r20636r20637
319319   int right = ((0xff - state->m_pan[1]) * state->m_vol[7]) >> 8;
320320
321321   if (state->m_filter1_3l != NULL)
322      flt_volume_set_volume(state->m_filter1_3l, left / 100.0);
322      state->m_filter1_3l->flt_volume_set_volume(left / 100.0);
323323   if (state->m_filter1_3r != NULL)
324      flt_volume_set_volume(state->m_filter1_3r, right / 100.0); /* FM #1 */
324      state->m_filter1_3r->flt_volume_set_volume(right / 100.0); /* FM #1 */
325325}
326326
327327static void update_psg0( running_machine &machine, int port )
328328{
329329   darius_state *state = machine.driver_data<darius_state>();
330   device_t *lvol = NULL, *rvol = NULL;
330   filter_volume_device *lvol = NULL, *rvol = NULL;
331331   int left, right;
332332
333333   switch (port)
r20636r20637
342342   right = ((0xff - state->m_pan[2]) * state->m_vol[port]) >> 8;
343343
344344   if (lvol != NULL)
345      flt_volume_set_volume(lvol, left / 100.0);
345      lvol->flt_volume_set_volume(left / 100.0);
346346   if (rvol != NULL)
347      flt_volume_set_volume(rvol, right / 100.0);
347      rvol->flt_volume_set_volume(right / 100.0);
348348}
349349
350350static void update_psg1( running_machine &machine, int port )
351351{
352352   darius_state *state = machine.driver_data<darius_state>();
353   device_t *lvol = NULL, *rvol = NULL;
353   filter_volume_device *lvol = NULL, *rvol = NULL;
354354   int left, right;
355355
356356   switch (port)
r20636r20637
365365   right = ((0xff - state->m_pan[3]) * state->m_vol[port + 3]) >> 8;
366366
367367   if (lvol != NULL)
368      flt_volume_set_volume(lvol, left / 100.0);
368      lvol->flt_volume_set_volume(left / 100.0);
369369   if (rvol != NULL)
370      flt_volume_set_volume(rvol, right / 100.0);
370      rvol->flt_volume_set_volume(right / 100.0);
371371}
372372
373373static void update_da( running_machine &machine )
r20636r20637
377377   int right = state->m_def_vol[(state->m_pan[4] >> 0) & 0x0f];
378378
379379   if (state->m_msm5205_l != NULL)
380      flt_volume_set_volume(state->m_msm5205_l, left / 100.0);
380      state->m_msm5205_l->flt_volume_set_volume(left / 100.0);
381381   if (state->m_msm5205_r != NULL)
382      flt_volume_set_volume(state->m_msm5205_r, right / 100.0);
382      state->m_msm5205_r->flt_volume_set_volume(right / 100.0);
383383}
384384
385385WRITE8_MEMBER(darius_state::darius_fm0_pan)
r20636r20637
843843   m_mscreen = machine().device("mscreen");
844844   m_rscreen = machine().device("rscreen");
845845
846   m_filter0_0l = machine().device("filter0.0l");
847   m_filter0_0r = machine().device("filter0.0r");
848   m_filter0_1l = machine().device("filter0.1l");
849   m_filter0_1r = machine().device("filter0.1r");
850   m_filter0_2l = machine().device("filter0.2l");
851   m_filter0_2r = machine().device("filter0.2r");
852   m_filter0_3l = machine().device("filter0.3l");
853   m_filter0_3r = machine().device("filter0.3r");
846   m_filter0_0l = machine().device<filter_volume_device>("filter0.0l");
847   m_filter0_0r = machine().device<filter_volume_device>("filter0.0r");
848   m_filter0_1l = machine().device<filter_volume_device>("filter0.1l");
849   m_filter0_1r = machine().device<filter_volume_device>("filter0.1r");
850   m_filter0_2l = machine().device<filter_volume_device>("filter0.2l");
851   m_filter0_2r = machine().device<filter_volume_device>("filter0.2r");
852   m_filter0_3l = machine().device<filter_volume_device>("filter0.3l");
853   m_filter0_3r = machine().device<filter_volume_device>("filter0.3r");
854854
855   m_filter1_0l = machine().device("filter1.0l");
856   m_filter1_0r = machine().device("filter1.0r");
857   m_filter1_1l = machine().device("filter1.1l");
858   m_filter1_1r = machine().device("filter1.1r");
859   m_filter1_2l = machine().device("filter1.2l");
860   m_filter1_2r = machine().device("filter1.2r");
861   m_filter1_3l = machine().device("filter1.3l");
862   m_filter1_3r = machine().device("filter1.3r");
855   m_filter1_0l = machine().device<filter_volume_device>("filter1.0l");
856   m_filter1_0r = machine().device<filter_volume_device>("filter1.0r");
857   m_filter1_1l = machine().device<filter_volume_device>("filter1.1l");
858   m_filter1_1r = machine().device<filter_volume_device>("filter1.1r");
859   m_filter1_2l = machine().device<filter_volume_device>("filter1.2l");
860   m_filter1_2r = machine().device<filter_volume_device>("filter1.2r");
861   m_filter1_3l = machine().device<filter_volume_device>("filter1.3l");
862   m_filter1_3r = machine().device<filter_volume_device>("filter1.3r");
863863
864   m_msm5205_l = machine().device("msm5205.l");
865   m_msm5205_r = machine().device("msm5205.r");
864   m_msm5205_l = machine().device<filter_volume_device>("msm5205.l");
865   m_msm5205_r = machine().device<filter_volume_device>("msm5205.r");
866866
867867   save_item(NAME(m_cpua_ctrl));
868868   save_item(NAME(m_coin_word));
r20636r20637
982982   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msm5205.l", 1.0)
983983   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msm5205.r", 1.0)
984984
985   MCFG_SOUND_ADD("filter0.0l", FILTER_VOLUME, 0)
985   MCFG_FILTER_VOLUME_ADD("filter0.0l", 0)
986986   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
987   MCFG_SOUND_ADD("filter0.0r", FILTER_VOLUME, 0)
987   MCFG_FILTER_VOLUME_ADD("filter0.0r", 0)
988988   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
989   MCFG_SOUND_ADD("filter0.1l", FILTER_VOLUME, 0)
989   MCFG_FILTER_VOLUME_ADD("filter0.1l", 0)
990990   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
991   MCFG_SOUND_ADD("filter0.1r", FILTER_VOLUME, 0)
991   MCFG_FILTER_VOLUME_ADD("filter0.1r", 0)
992992   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
993   MCFG_SOUND_ADD("filter0.2l", FILTER_VOLUME, 0)
993   MCFG_FILTER_VOLUME_ADD("filter0.2l", 0)
994994   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
995   MCFG_SOUND_ADD("filter0.2r", FILTER_VOLUME, 0)
995   MCFG_FILTER_VOLUME_ADD("filter0.2r", 0)
996996   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
997   MCFG_SOUND_ADD("filter0.3l", FILTER_VOLUME, 0)
997   MCFG_FILTER_VOLUME_ADD("filter0.3l", 0)
998998   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
999   MCFG_SOUND_ADD("filter0.3r", FILTER_VOLUME, 0)
999   MCFG_FILTER_VOLUME_ADD("filter0.3r", 0)
10001000   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
10011001
1002   MCFG_SOUND_ADD("filter1.0l", FILTER_VOLUME, 0)
1002   MCFG_FILTER_VOLUME_ADD("filter1.0l", 0)
10031003   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
1004   MCFG_SOUND_ADD("filter1.0r", FILTER_VOLUME, 0)
1004   MCFG_FILTER_VOLUME_ADD("filter1.0r", 0)
10051005   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
1006   MCFG_SOUND_ADD("filter1.1l", FILTER_VOLUME, 0)
1006   MCFG_FILTER_VOLUME_ADD("filter1.1l", 0)
10071007   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
1008   MCFG_SOUND_ADD("filter1.1r", FILTER_VOLUME, 0)
1008   MCFG_FILTER_VOLUME_ADD("filter1.1r", 0)
10091009   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
1010   MCFG_SOUND_ADD("filter1.2l", FILTER_VOLUME, 0)
1010   MCFG_FILTER_VOLUME_ADD("filter1.2l", 0)
10111011   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
1012   MCFG_SOUND_ADD("filter1.2r", FILTER_VOLUME, 0)
1012   MCFG_FILTER_VOLUME_ADD("filter1.2r", 0)
10131013   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
1014   MCFG_SOUND_ADD("filter1.3l", FILTER_VOLUME, 0)
1014   MCFG_FILTER_VOLUME_ADD("filter1.3l", 0)
10151015   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
1016   MCFG_SOUND_ADD("filter1.3r", FILTER_VOLUME, 0)
1016   MCFG_FILTER_VOLUME_ADD("filter1.3r", 0)
10171017   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
10181018
1019   MCFG_SOUND_ADD("msm5205.l", FILTER_VOLUME, 0)
1019   MCFG_FILTER_VOLUME_ADD("msm5205.l", 0)
10201020   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
1021   MCFG_SOUND_ADD("msm5205.r", FILTER_VOLUME, 0)
1021   MCFG_FILTER_VOLUME_ADD("msm5205.r", 0)
10221022   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
10231023
10241024   MCFG_TC0140SYT_ADD("tc0140syt", darius_tc0140syt_intf)
trunk/src/mame/audio/scramble.c
r20636r20637
141141   if (data & 2)
142142      C +=  47000;    /*  47000pF = 0.047uF */
143143   if (device != NULL)
144      filter_rc_set_RC(device,FLT_RC_LOWPASS,1000,5100,0,CAP_P(C));
144      dynamic_cast<filter_rc_device*>(device)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C));
145145}
146146
147147WRITE8_MEMBER(scramble_state::scramble_filter_w)
trunk/src/mame/audio/timeplt.c
r20636r20637
118118   if (data & 2)
119119      C +=  47000;    /*  47000pF = 0.047uF */
120120
121   filter_rc_set_RC(device, FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C));
121   dynamic_cast<filter_rc_device*>(device)->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 5100, 0, CAP_P(C));
122122}
123123
124124
r20636r20637
233233   MCFG_SOUND_ROUTE(1, "filter.1.1", 0.60)
234234   MCFG_SOUND_ROUTE(2, "filter.1.2", 0.60)
235235
236   MCFG_SOUND_ADD("filter.0.0", FILTER_RC, 0)
236   MCFG_FILTER_RC_ADD("filter.0.0", 0)
237237   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
238   MCFG_SOUND_ADD("filter.0.1", FILTER_RC, 0)
238   MCFG_FILTER_RC_ADD("filter.0.1", 0)
239239   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
240   MCFG_SOUND_ADD("filter.0.2", FILTER_RC, 0)
240   MCFG_FILTER_RC_ADD("filter.0.2", 0)
241241   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
242242
243   MCFG_SOUND_ADD("filter.1.0", FILTER_RC, 0)
243   MCFG_FILTER_RC_ADD("filter.1.0", 0)
244244   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
245   MCFG_SOUND_ADD("filter.1.1", FILTER_RC, 0)
245   MCFG_FILTER_RC_ADD("filter.1.1", 0)
246246   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
247   MCFG_SOUND_ADD("filter.1.2", FILTER_RC, 0)
247   MCFG_FILTER_RC_ADD("filter.1.2", 0)
248248   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
249249MACHINE_CONFIG_END
250250
trunk/src/emu/sound/flt_rc.c
r20636r20637
11#include "emu.h"
22#include "flt_rc.h"
33
4struct filter_rc_state
4
5const flt_rc_config flt_rc_ac_default = {FLT_RC_AC, 10000, 0, 0, CAP_U(1)};
6
7
8// device type definition
9const device_type FILTER_RC = &device_creator<filter_rc_device>;
10
11
12//**************************************************************************
13//  LIVE DEVICE
14//**************************************************************************
15
16//-------------------------------------------------
17//  qsound_device - constructor
18//-------------------------------------------------
19
20filter_rc_device::filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
21   : device_t(mconfig, FILTER_RC, "RC Filter", tag, owner, clock),
22     device_sound_interface(mconfig, *this),
23     m_stream(NULL),
24     m_k(0),
25     m_memory(0),
26     m_type(0)
527{
6   device_t *device;
7   sound_stream *  stream;
8   int             k;
9   int             memory;
10   int             type;
11};
28}
1229
13INLINE filter_rc_state *get_safe_token(device_t *device)
30
31//-------------------------------------------------
32//  device_start - device-specific startup
33//-------------------------------------------------
34
35void filter_rc_device::device_start()
1436{
15   assert(device != NULL);
16   assert(device->type() == FILTER_RC);
17   return (filter_rc_state *)downcast<filter_rc_device *>(device)->token();
37   const flt_rc_config *conf = (const flt_rc_config *)static_config();
38
39   m_stream = stream_alloc(1, 1, machine().sample_rate());
40   if (conf)
41      set_RC_info(conf->type, conf->R1, conf->R2, conf->R3, conf->C);
42   else
43      set_RC_info(FLT_RC_LOWPASS, 1, 1, 1, 0);
1844}
1945
20const flt_rc_config flt_rc_ac_default = {FLT_RC_AC, 10000, 0, 0, CAP_U(1)};
2146
47//-------------------------------------------------
48//  sound_stream_update - handle a stream update
49//-------------------------------------------------
2250
23static STREAM_UPDATE( filter_rc_update )
51void filter_rc_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
2452{
2553   stream_sample_t *src = inputs[0];
2654   stream_sample_t *dst = outputs[0];
27   filter_rc_state *info = (filter_rc_state *)param;
28   int memory = info->memory;
55   int memory = m_memory;
2956
30   switch (info->type)
57   switch (m_type)
3158   {
3259      case FLT_RC_LOWPASS:
3360         while (samples--)
3461         {
35            memory += ((*src++ - memory) * info->k) / 0x10000;
62            memory += ((*src++ - memory) * m_k) / 0x10000;
3663            *dst++ = memory;
3764         }
3865         break;
r20636r20637
4168         while (samples--)
4269         {
4370            *dst++ = *src - memory;
44            memory += ((*src++ - memory) * info->k) / 0x10000;
71            memory += ((*src++ - memory) * m_k) / 0x10000;
4572         }
4673         break;
4774   }
48   info->memory = memory;
75   m_memory = memory;
4976}
5077
51static void set_RC_info(filter_rc_state *info, int type, double R1, double R2, double R3, double C)
78
79void filter_rc_device::set_RC_info(int type, double R1, double R2, double R3, double C)
5280{
5381   double Req;
5482
55   info->type = type;
83   m_type = type;
5684
57   switch (info->type)
85   switch (m_type)
5886   {
5987      case FLT_RC_LOWPASS:
6088         if (C == 0.0)
6189         {
6290            /* filter disabled */
63            info->k = 0x10000;
91            m_k = 0x10000;
6492            return;
6593         }
6694         Req = (R1 * (R2 + R3)) / (R1 + R2 + R3);
r20636r20637
7098         if (C == 0.0)
7199         {
72100            /* filter disabled */
73            info->k = 0x0;
74            info->memory = 0x0;
101            m_k = 0x0;
102            m_memory = 0x0;
75103            return;
76104         }
77105         Req = R1;
78106         break;
79107      default:
80         fatalerror("filter_rc_setRC: Wrong filter type %d\n", info->type);
108         fatalerror("filter_rc_setRC: Wrong filter type %d\n", m_type);
81109   }
82110
83111   /* Cut Frequency = 1/(2*Pi*Req*C) */
84112   /* k = (1-(EXP(-TIMEDELTA/RC)))    */
85   info->k = 0x10000 - 0x10000 * (exp(-1 / (Req * C) / info->device->machine().sample_rate()));
113   m_k = 0x10000 - 0x10000 * (exp(-1 / (Req * C) / machine().sample_rate()));
86114}
87115
88116
89static DEVICE_START( filter_rc )
117void filter_rc_device::filter_rc_set_RC(int type, double R1, double R2, double R3, double C)
90118{
91   filter_rc_state *info = get_safe_token(device);
92   const flt_rc_config *conf = (const flt_rc_config *)device->static_config();
93
94   info->device = device;
95   info->stream = device->machine().sound().stream_alloc(*device, 1, 1, device->machine().sample_rate(), info, filter_rc_update);
96   if (conf)
97      set_RC_info(info, conf->type, conf->R1, conf->R2, conf->R3, conf->C);
98   else
99      set_RC_info(info, FLT_RC_LOWPASS, 1, 1, 1, 0);
119   m_stream->update();
120   set_RC_info(type, R1, R2, R3, C);
100121}
101122
102
103void filter_rc_set_RC(device_t *device, int type, double R1, double R2, double R3, double C)
104{
105   filter_rc_state *info = get_safe_token(device);
106
107   info->stream->update();
108
109   set_RC_info(info, type, R1, R2, R3, C);
110
111}
112
113const device_type FILTER_RC = &device_creator<filter_rc_device>;
114
115filter_rc_device::filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
116   : device_t(mconfig, FILTER_RC, "RC Filter", tag, owner, clock),
117      device_sound_interface(mconfig, *this)
118{
119   m_token = global_alloc_clear(filter_rc_state);
120}
121
122//-------------------------------------------------
123//  device_config_complete - perform any
124//  operations now that the configuration is
125//  complete
126//-------------------------------------------------
127
128void filter_rc_device::device_config_complete()
129{
130}
131
132//-------------------------------------------------
133//  device_start - device-specific startup
134//-------------------------------------------------
135
136void filter_rc_device::device_start()
137{
138   DEVICE_START_NAME( filter_rc )(this);
139}
140
141//-------------------------------------------------
142//  sound_stream_update - handle a stream update
143//-------------------------------------------------
144
145void filter_rc_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
146{
147   // should never get here
148   fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
149}
trunk/src/emu/sound/flt_rc.h
r20636r20637
11#pragma once
22
33#ifndef __FLT_RC_H__
4#define FLT_RC_H
4#define __FLT_RC_H__
55
66#include "machine/rescap.h"
7#include "devlegcy.h"
87
9#define FLT_RC_LOWPASS      0
10#define FLT_RC_HIGHPASS     1
11#define FLT_RC_AC           2
12
138/*
149 * FLT_RC_LOWPASS:
1510 *
r20636r20637
4540 *
4641 */
4742
43//**************************************************************************
44//  INTERFACE CONFIGURATION MACROS
45//**************************************************************************
46
47#define MCFG_FILTER_RC_ADD(_tag, _clock) \
48   MCFG_DEVICE_ADD(_tag, FILTER_RC, _clock)
49#define MCFG_FILTER_RC_REPLACE(_tag, _clock) \
50   MCFG_DEVICE_REPLACE(_tag, FILTER_RC, _clock)
51
52
53//**************************************************************************
54//  TYPE DEFINITIONS
55//**************************************************************************
56
57#define FLT_RC_LOWPASS      0
58#define FLT_RC_HIGHPASS     1
59#define FLT_RC_AC           2
60
4861struct flt_rc_config
4962{
5063   int type;
r20636r20637
5669
5770extern const flt_rc_config flt_rc_ac_default;
5871
59void filter_rc_set_RC(device_t *device, int type, double R1, double R2, double R3, double C);
6072
73// ======================> filter_rc_device
74
6175class filter_rc_device : public device_t,
62                           public device_sound_interface
76                  public device_sound_interface
6377{
6478public:
6579   filter_rc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
66   ~filter_rc_device() { global_free(m_token); }
80   ~filter_rc_device() { }
6781
68   // access to legacy token
69   void *token() const { assert(m_token != NULL); return m_token; }
82    void filter_rc_set_RC(int type, double R1, double R2, double R3, double C);
83
7084protected:
7185   // device-level overrides
72   virtual void device_config_complete();
7386   virtual void device_start();
7487
7588   // sound stream update overrides
7689   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
90
7791private:
78   // internal state
79   void *m_token;
92    void set_RC_info(int type, double R1, double R2, double R3, double C);
93
94private:
95   sound_stream*  m_stream;
96   int            m_k;
97   int            m_memory;
98   int            m_type;
8099};
81100
82101extern const device_type FILTER_RC;
trunk/src/emu/sound/flt_vol.c
r20636r20637
22#include "flt_vol.h"
33
44
5struct filter_volume_state
6{
7   sound_stream *  stream;
8   int             gain;
9};
10
11INLINE filter_volume_state *get_safe_token(device_t *device)
12{
13   assert(device != NULL);
14   assert(device->type() == FILTER_VOLUME);
15   return (filter_volume_state *)downcast<filter_volume_device *>(device)->token();
16}
17
18
19
20static STREAM_UPDATE( filter_volume_update )
21{
22   stream_sample_t *src = inputs[0];
23   stream_sample_t *dst = outputs[0];
24   filter_volume_state *info = (filter_volume_state *)param;
25
26   while (samples--)
27      *dst++ = (*src++ * info->gain) >> 8;
28}
29
30
31static DEVICE_START( filter_volume )
32{
33   filter_volume_state *info = get_safe_token(device);
34
35   info->gain = 0x100;
36   info->stream = device->machine().sound().stream_alloc(*device, 1, 1, device->machine().sample_rate(), info, filter_volume_update);
37}
38
39
40void flt_volume_set_volume(device_t *device, float volume)
41{
42   filter_volume_state *info = get_safe_token(device);
43   info->gain = (int)(volume * 256);
44}
45
5// device type definition
466const device_type FILTER_VOLUME = &device_creator<filter_volume_device>;
477
48filter_volume_device::filter_volume_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
49   : device_t(mconfig, FILTER_VOLUME, "Volume Filter", tag, owner, clock),
50      device_sound_interface(mconfig, *this)
51{
52   m_token = global_alloc_clear(filter_volume_state);
53}
54
558//-------------------------------------------------
56//  device_config_complete - perform any
57//  operations now that the configuration is
58//  complete
9//  qsound_device - constructor
5910//-------------------------------------------------
6011
61void filter_volume_device::device_config_complete()
12filter_volume_device::filter_volume_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
13   : device_t(mconfig, FILTER_VOLUME, "Volume Filter", tag, owner, clock),
14     device_sound_interface(mconfig, *this),
15     m_stream(NULL),
16     m_gain(0)
6217{
6318}
6419
20
6521//-------------------------------------------------
6622//  device_start - device-specific startup
6723//-------------------------------------------------
6824
6925void filter_volume_device::device_start()
7026{
71   DEVICE_START_NAME( filter_volume )(this);
27   m_gain = 0x100;
28   m_stream = stream_alloc(1, 1, machine().sample_rate());
7229}
7330
31
7432//-------------------------------------------------
7533//  sound_stream_update - handle a stream update
7634//-------------------------------------------------
7735
7836void filter_volume_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
7937{
80   // should never get here
81   fatalerror("sound_stream_update called; not applicable to legacy sound devices\n");
38   stream_sample_t *src = inputs[0];
39   stream_sample_t *dst = outputs[0];
40
41   while (samples--)
42      *dst++ = (*src++ * m_gain) >> 8;
8243}
44
45
46
47void filter_volume_device::flt_volume_set_volume(float volume)
48{
49   m_gain = (int)(volume * 256);
50}
51
trunk/src/emu/sound/flt_vol.h
r20636r20637
33#ifndef __FLT_VOL_H__
44#define __FLT_VOL_H__
55
6#include "devlegcy.h"
76
87
9void flt_volume_set_volume(device_t *device, float volume);
8//**************************************************************************
9//  INTERFACE CONFIGURATION MACROS
10//**************************************************************************
1011
12#define MCFG_FILTER_VOLUME_ADD(_tag, _clock) \
13   MCFG_DEVICE_ADD(_tag, FILTER_VOLUME, _clock)
14#define MCFG_FILTER_VOLUME_REPLACE(_tag, _clock) \
15   MCFG_DEVICE_REPLACE(_tag, FILTER_VOLUME, _clock)
16
17
18//**************************************************************************
19//  TYPE DEFINITIONS
20//**************************************************************************
21
22// ======================> filter_volume_device
23
1124class filter_volume_device : public device_t,
12                           public device_sound_interface
25                      public device_sound_interface
1326{
1427public:
1528   filter_volume_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
16   ~filter_volume_device() { global_free(m_token); }
29   ~filter_volume_device() { }
1730
18   // access to legacy token
19   void *token() const { assert(m_token != NULL); return m_token; }
31    void flt_volume_set_volume(float volume);
32
2033protected:
2134   // device-level overrides
22   virtual void device_config_complete();
2335   virtual void device_start();
2436
2537   // sound stream update overrides
2638   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
39
2740private:
28   // internal state
29   void *m_token;
41   sound_stream*  m_stream;
42   int            m_gain;
3043};
3144
3245extern const device_type FILTER_VOLUME;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team