예제 #1
0
    def __init__(self):
        persistent_attrs_init(self)
        self.synth = Fluidsynth()
        logging.debug("...")

        # 16 channels.  One DeviceChain for each channel.  Each
        # DeviceChain has a `Latch` and `Arpeggiator`
        self.devicechains = [DeviceChain(self, i) for i in range(16)]

        ## The root of all notes.
        self.key = notes.A

        logging.debug("...")
        self.grids = []
        self.scale = [0, 3, 6, 7, 10]
        self.cpu = CPU(self)
        self.clock = Clock(self)
        self.looper = Looper(self)
        self.mixer = Mixer(self)
        self.detect_devices()

        # FIXME: probably make this configurable somehow (env var...?)
        if False:
            from termpad import ASCIIGrid
            self.grids.append(ASCIIGrid(self, 0, 1))
예제 #2
0
    def test_make_proof(self):
        wrapper = Mixer(NATIVE_LIB_PATH, VK_PATH, PK_PATH)
        tree_depth = wrapper.tree_depth

        n_items = 2 << (tree_depth - 1)
        tree = MerkleTree(n_items)
        for n in range(0, 2):
            tree.append(int(FQ.random()))

        wallet_address = int(FQ.random())
        nullifier_secret = int(FQ.random())
        nullifier_hash = mimc_hash([nullifier_secret, nullifier_secret])
        leaf_hash = int(
            get_sha256_hash(to_hex(nullifier_secret), to_hex(wallet_address)),
            16)

        leaf_idx = tree.append(leaf_hash)
        self.assertEqual(leaf_idx, tree.index(leaf_hash))

        # Verify it exists in true
        leaf_proof = tree.proof(leaf_idx)
        self.assertTrue(leaf_proof.verify(tree.root))

        # Generate proof
        snark_proof = wrapper.prove(
            tree.root,
            wallet_address,
            nullifier_hash,
            nullifier_secret,
            # (index)_2 bits reversed, i.e. [LSB, ... , MSB]
            leaf_proof.address,
            leaf_proof.path)

        self.assertTrue(wrapper.verify(snark_proof))
예제 #3
0
    def test_1(self):
        mixer1 = Mixer()
        out_v: int = mixer1.getvolume(out=True)
        in_v: int = mixer1.getvolume(out=False)

        mixer1.setvolume(33, out=True)
        mixer1.setvolume(23, out=False)

        self.assertEqual(mixer1.getvolume(out=True), 33)
        self.assertEqual(mixer1.getvolume(out=False), 23)

        mixer1.setvolume(out_v, out=True)
        mixer1.setvolume(in_v, out=False)

        mixer3 = Mixer()
        self.assertEqual(mixer3.getvolume(out=True), out_v)
        self.assertEqual(mixer3.getvolume(out=False), in_v)
예제 #4
0
    def playit(self,file):
        os.system('clear')
        "Playing..."
        playing = Mixer(file)
        playing.mixer()
        os.system('clear')
        print "Done."
        pass

        pass
예제 #5
0
 def __init__(self):
     persistent_attrs_init(self)
     self.synth = Fluidsynth()
     self.devicechains = [DeviceChain(self, i) for i in range(16)]
     self.grids = []
     self.cpu = CPU(self)
     self.clock = Clock(self)
     self.looper = Looper(self)
     self.mixer = Mixer(self)
     # FIXME: probably make this configurable somehow (env var...?)
     if False:
         from termpad import ASCIIGrid
         self.grids.append(ASCIIGrid(self, 0, 1))
예제 #6
0
def mixer_process_function():
    """This function is meant to be placed into is own process and loops in
    order to play the sounds without delay
    """
    # Initialise the mixer and provide a callback to output to the GPIO port
    mixer = Mixer(lambda x: GPIO.output(consts.BUZZER_GPIO_CODE, x > 0.0))
    time_old = time.time()
    while True:
        time_now = time.time()
        # Take from the queue and insert into the mixer
        while not consts.MIXER_QUEUE.empty():
            mixer.insert(*consts.MIXER_QUEUE.get())
        time_delta = time_now - time_old
        # Sample the mixer to provide output
        mixer.sample(time_delta)
        time_old = time_now
예제 #7
0
파일: ddc.py 프로젝트: babyge/phasenoise
    def __init__(self,
                 input_bits=12,
                 output_bits=16,
                 phaseinc_bits=18,
                 nco_bits=18,
                 if_bits=20):
        self.i_sample = Signal((input_bits, True))

        self.o_i = Signal((output_bits, True))
        self.o_q = Signal((output_bits, True))
        self.o_valid = Signal()

        self.i_nco_freq = Signal(phaseinc_bits)

        self.input_bits = input_bits
        self.output_bits = output_bits
        self.phase_bits = phaseinc_bits
        self.if_bits = if_bits
        self.nco_bits = nco_bits

        self.nco = nco = NCO(output_bits=nco_bits, phaseinc_bits=phaseinc_bits)

        self.mixer = mixer = Mixer(sample_bits=input_bits,
                                   nco_bits=nco_bits,
                                   output_bits=if_bits)
        self.cic_i = cic_i = CIC(input_bits=if_bits)
        self.cic_q = cic_q = CIC(input_bits=if_bits)

        self.comb += [
            mixer.i_sample.eq(self.i_sample),
            mixer.i_nco_i.eq(nco.o_nco_i),
            mixer.i_nco_q.eq(nco.o_nco_q),
            cic_i.i_sample.eq(mixer.o_i),
            cic_q.i_sample.eq(mixer.o_q),
            self.o_valid.eq(cic_i.o_valid),
            self.o_i.eq(cic_i.o_result[(cic_i.filter_bits - output_bits):]),
            self.o_q.eq(cic_q.o_result[(cic_q.filter_bits - output_bits):])
        ]

        self.submodules += [
            nco,
            mixer,
            cic_i,
            cic_q,
        ]
예제 #8
0
    def __init__(self):
        """Class constructor. Loads everything into memory
        """
        self.display = pg.display.set_mode((640, 360))
        pg.display.set_caption("Crawler")
        pg.init()
        self.level_list = None
        self.gui = Gui((640, 360))
        self.level_id = 0
        self.level = None
        self.event_queue = EventQueue()
        self.clock = Clock()
        self.renderer = Renderer(self.display, self.level, self.gui)
        self.mixer = Mixer()
        self.mixer.load_track(0)
        self.mixer.set_volume(0.3)
        self.game_loop = None
        self.menu_loop = MenuLoop(self.renderer, self.event_queue, self.clock)

        self.start_menu()
예제 #9
0
 def __init__(self, display: Display):
     self.__mixer = Mixer()
     # precaution initial muting
     self.__mixer.mute()
     self.__stateFile = StateFile()
     self.__display = display
     self.__showInitInfo()
     self.__cdIsOver = False
     self.__mpv = MyMPV(self)
     self.__selectedSource = None
     self.__extConfig = self.__initExtConfig()
     # initial mute - arduino will send proper volumecommand
     # initial mute - arduino will send proper volumecommand
     # self.__switchToRadio()
     radioSource = RadioSource(display, self.__extConfig, self.__stateFile,
                               self.__mixer, self)
     self.__cdSource = CDSource(display, self.__extConfig, self.__stateFile,
                                self.__mixer, self)
     flashSource = FlashSource(display, self.__extConfig, self.__stateFile,
                               self.__mixer, self)
     self.__sources = [radioSource, flashSource, self.__cdSource]
     self.__ringSources = cycle(self.__sources)
     self.switch()
예제 #10
0
	def __init__(
		self, freq=440.0, level=1.0, phase=0.0, feedback=0, wave_type='sine', 
		fm_type='DX', gate=Gate([0.0]), key_in=None
	):
		Oscillator.__init__(self, key_in)

		self.freq = freq				#frequency

		self.mixer = Mixer()			#mixer to add modulators' outputs

		#sound generator
		if fm_type == 'LinearFM':			
			self.generator = LinearFMGenerator(
				freq, level, phase, wave_type, self.mixer, key_in
			)
		elif fm_type == 'DX':
			self.generator = DXGenerator(
				freq, level, phase, wave_type, self.mixer, key_in
			)

		self.eg = ADSR(input=gate)		#envelope generator

		#amplifier
		self.amp = Amplifier(input=self.generator, mod=self.eg)
예제 #11
0
from mixer import Mixer, get_from_list, shuffled_ints, shuffled_decs

if __name__ == "__main__":
    fn = get_from_list("lists/firstnames.txt")
    ln = get_from_list("lists/lastnames.txt")
    dates_f = get_from_list("lists/dates.txt")
    systems_f = get_from_list("lists/systems.txt")
    device_agents_f = get_from_list("lists/device_agents.txt")

    mixer = Mixer()
    mixer.set_delimiter('|')
    mixer.add_column(fn)
    mixer.add_column(ln)
    mixer.add_column(shuffled_ints(1, 5))
    mixer.add_column(shuffled_ints(100, 250))
    mixer.add_column(dates_f)
    mixer.add_column(systems_f)
    mixer.add_column(device_agents_f)
    mixer.add_column(dates_f)
    mixer.add_column(['\n'])
    print mixer.mix(number_of_records=100, with_incremental_id=False)

    with open('sample-data.txt', "w+") as f:
        f.writelines([
            "first_name|last_name|count_num|amount|start_date|name_2|name_3|date_1|empty_col\n"
        ])
        f.writelines(
            mixer.mix(number_of_records=100000, with_incremental_id=False))
예제 #12
0
N_COMPS = 5

unit_dict = dict()

# instantiate the required objects

condensate = Stream(n_comps=N_COMPS, name='Condensate')
reflux = Stream(n_comps=N_COMPS, name='Reflux')
top_product = Stream(n_comps=N_COMPS, name='Top product')
bottoms = Stream(n_comps=N_COMPS, name='Bottoms')
vapor_reboil = Stream(n_comps=N_COMPS, name='Vapor reboil')
bottom_product = Stream(n_comps=N_COMPS, name='Bottom product')
feed = Stream(n_comps=N_COMPS, name='LiquidFeed')
condenser = Mixer(streams_in=[condensate],
                  streams_out=[reflux, top_product],
                  name='Condenser')
reboiler = Mixer(streams_in=[bottoms],
                 streams_out=[vapor_reboil, bottom_product],
                 name='Reboiler')
feed_flow_spec = Specify(flow=True, stream=feed, value=100)
feed_temp_spec = Specify(temperature=True, stream=feed, value=100)
feed_ic4_spec = Specify(fraction=True, stream=feed, comp_num=0, value=0.1)
feed_nc4_spec = Specify(fraction=True, stream=feed, comp_num=1, value=0.3)
feed_ic5_spec = Specify(fraction=True, stream=feed, comp_num=2, value=0.2)
feed_nc5_spec = Specify(fraction=True, stream=feed, comp_num=3, value=0.3)
feed_nc6_spec = Specify(fraction=True, stream=feed, comp_num=4, value=0.1)
reflux_flow_spec = Specify(flow=True, stream=reflux, value=120)
vapor_reboil_flow_spec = Specify(flow=True, stream=vapor_reboil, value=160)
top_product_flow_spec = Specify(flow=True, stream=top_product, value=40)
foust_8_11 = SimpleColumn(n_trays=15,
예제 #13
0
class ExtendedCtrl(LooperCtrl):
    """Add screen connection and Mixer.
     Add looper commands"""
    __mixer: Mixer = Mixer()

    def __init__(self, scr_conn: Connection):
        LooperCtrl.__init__(self)
        self.__update_method: str = ""
        self.__description: str = ""
        self.__scr_conn: Connection = scr_conn

    def _redraw(self) -> None:
        """used by children to _redraw itself on screen"""
        if self.__update_method:
            method = getattr(self, self.__update_method)
            info = method()
        else:
            info = ""

        part = self.get_item_now()
        self.__scr_conn.send([
            ConfigName.redraw, info, self.__description, part.length, self.idx,
            self._go_play.is_set(),
            self.get_stop_event().is_set()
        ])

    def _prepare_redraw(self, update_method: str, description: str) -> None:
        self.__update_method = update_method
        self.__description = description
        if self._is_rec:
            self._is_rec = False
            part = self.get_item_now()
            loop = part.get_item_now()
            if loop.is_empty:
                loop.trim_buffer(self.idx, self.get_item_now().length)

        self._redraw()

    def _prepare_song(self) -> None:
        super()._prepare_song()
        self.items.append(SongPart(self))
        self.items.append(SongPart(self))
        self.items.append(SongPart(self))
        self.items.append(SongPart(self))

    #  ========= change methods

    def _load_drum_type(self):
        self.drum.load_drum_type()
        self._redraw()

    def _change_mixer_in(self, change_by: int) -> None:
        out_vol: bool = False
        ExtendedCtrl.__mixer.change_volume(change_by, out_vol)
        self._redraw()

    def _change_mixer_out(self, change_by: int) -> None:
        out_vol: bool = True
        ExtendedCtrl.__mixer.change_volume(change_by, out_vol)
        self._redraw()

    def _change_drum_volume(self, change_by: int) -> None:
        self.drum.change_volume(change_by)
        self._redraw()

    def _change_drum_swing(self, change_by: int) -> None:
        self.drum.change_swing(change_by)
        self._redraw()

    def _change_drum(self) -> None:
        self.drum.play_break_now()

    def _change_song(self, *params) -> None:
        self._file_finder.iterate_dir(go_fwd=params[0] > 0)
        self._redraw()

    def _change_drum_type(self, *params) -> None:
        self.drum.change_drum_type(go_fwd=params[0] >= 0)
        self._redraw()

    def _change_drum_intensity(self, change_by: int) -> None:
        self.drum.change_intensity(change_by)

    # ================ show methods

    def _show_song_now(self) -> str:
        ff = self._file_finder
        return ff.get_item_now()

    def _show_song_next(self) -> str:
        ff = self._file_finder
        return ff.get_item_next()

    def _show_drum_type(self) -> str:
        return self.drum.show_drum_type()

    def _show_one_part(self) -> str:
        tmp = ""

        part = self.get_item_now()
        for k, loop in enumerate(part.items):
            tmp += loop.state_str(k == part.now, k == part.next)
            tmp += loop.info_str(USE_COLS)
            tmp += "\n"
        return tmp[:-1]

    def _show_all_parts(self) -> str:
        tmp = ""
        for k, part in enumerate(self.items):
            tmp += part.state_str(k == self.now, k == self.next)
            tmp += part.items[0].info_str(
                USE_COLS) if part.items_len else "-" * USE_COLS
            tmp += "\n"
        return tmp[:-1]

    def _show_drum_param(self) -> str:
        tmp = "vol:".ljust(STATE_COLS) + val_str(self.drum.volume, 0, 1,
                                                 USE_COLS) + "\n"
        tmp += "swing:".ljust(STATE_COLS) + val_str(self.drum.swing, 0.5, 0.75,
                                                    USE_COLS)
        return tmp

    @staticmethod
    def _show_mixer_volume() -> str:
        tmp = "out:".ljust(STATE_COLS) + val_str(
            ExtendedCtrl.__mixer.getvolume(out=True), 0, 100, USE_COLS) + "\n"
        tmp += "in:".ljust(STATE_COLS) + val_str(
            ExtendedCtrl.__mixer.getvolume(out=False), 0, 100, USE_COLS)

        return tmp

    @staticmethod
    def _show_version() -> str:
        return f"Version: {CURRENT_VERSION}"

    # ================ other methods

    def _fade_and_stop(self, *params):
        self._go_play.clear()
        seconds: int = params[0]
        ExtendedCtrl.__mixer.fade(seconds)
        self.stop_now()

    @staticmethod
    def _restart() -> None:
        ppid = os.getppid()
        run_os_cmd(["kill", "-9", str(ppid)])

    @staticmethod
    def _check_updates() -> None:
        run_os_cmd(["git", "reset", "--hard"])
        if 0 == run_os_cmd(["git", "pull", "--ff-only"]):
            ExtendedCtrl._restart()

    #  ============ All song parts view and related commands

    def _clear_part_id(self, part_id: int) -> None:
        if part_id != self.now:
            self._is_rec = False
            part = self.items[part_id]
            self.next = self.now
            self._stop_never()
            if not part.is_empty:
                self.items[part_id] = SongPart(self)

        self._redraw()

    def _duplicate_part(self) -> None:
        part = self.get_item_now()
        if part.is_empty:
            return
        for x in self.items:
            if x.is_empty:
                x.items = copy.deepcopy(part.items)
                self._redraw()
                break

    def _undo_part(self) -> None:
        part = self.get_item_now()
        if part.items_len > 1:
            loop = part.items.pop()
            part.now = part.next = 0
            if self._is_rec:
                self._is_rec = False
            else:
                part.backup.append(loop)

        self._redraw()

    def _redo_part(self) -> None:
        self._is_rec = False
        part = self.get_item_now()
        if len(part.backup) > 0:
            part.items.append(part.backup.pop())

        self._redraw()

    #  ================= One song part view and related commands

    def _change_loop(self, *params) -> None:
        if self._is_rec:
            return
        part = self.get_item_now()
        if params[0] == "prev":
            new_id = part.now - 1
            new_id %= part.items_len
            part.now = new_id
        elif params[0] == "next":
            new_id = part.now + 1
            new_id %= part.items_len
            part.now = new_id
        elif params[0] == "delete" and part.now != 0:
            part.items.pop(part.now)
            part.now = 0
        elif params[0] == "silent" and part.now != 0:
            loop = self.get_item_now().get_item_now()
            loop.is_silent = not loop.is_silent
        elif params[0] == "reverse" and part.now != 0:
            loop = self.get_item_now().get_item_now()
            loop.is_reverse = not loop.is_reverse
            loop.is_silent = False
        elif params[0] == "move" and part.now != 0:
            loop = part.items.pop(part.now)
            part.items.append(loop)
            part.now = part.next = part.items_len - 1

        self._redraw()

    def _undo_loop(self):
        self._is_rec = False
        part = self.get_item_now()
        if part.now == 0:
            self._undo_part()
        else:
            loop = part.get_item_now()
            if loop.is_empty:
                part.items.pop(part.now)
                part.now = part.next = 0
            else:
                loop.undo()

        self._redraw()

    def _redo_loop(self):
        self._is_rec = False
        part = self.get_item_now()
        if part.now == 0:
            self._redo_part()
        else:
            loop = part.get_item_now()
            loop.redo()

        self._redraw()
예제 #14
0
    def __init__(self,
                 n_trays,
                 feed_tray,
                 feed_stream_liq,
                 reflux,
                 vapor_reboil,
                 condensate,
                 bottoms,
                 pressure,
                 tray_efficiency=1.0,
                 name=None):
        '''
        feed_tray must be an integer between 1 and n_trays-2 (feed cannot be to the top or bottom trays for now)
        the bottom tray is tray number zero
        the top tray is tray number n_trays-1
        
        the default efficiency is 1 for all trays.
        if tray_efficiency is a scalar, it is used for all trays.
        if tray_efficiency is a dict (tray:efficiency), it is used for the specified trays. the remaining are
        assigned an efficiency of 1.
        '''
        self.column_num = SimpleColumn.n_columns
        super().__init__(name, self.column_num)
        SimpleColumn.n_columns += 1

        assert n_trays > 0, '{}: Number of tray must be greater than zero (specified {})'.format(
            self.name, n_trays)
        self.n_trays = n_trays

        assert (feed_tray >= 1) and (feed_tray <= self.n_trays-2), \
            '{}: Feed tray number must be from 1 to {} inclusive (specified {}). No feed to the top or bottom trays for now' \
            .format(self.name, self.n_trays-2, feed_tray)
        self.feed_tray = feed_tray

        self.feed_stream_liq = feed_stream_liq
        self.reflux = reflux
        self.vapor_reboil = vapor_reboil
        self.condensate = condensate
        self.bottoms = bottoms
        self.pressure = pressure
        self.n_vars = 0
        self.n_eqns = 0
        self.xvar = None
        self.eqns = None

        # figure out number of streams to be created as part of this column
        # for each tray, there are two streams leaving (one liquid, one vapor)
        # one liquid feed stream (comes from outside the column)
        # one stream that is a combination of the liquid feed stream and the liquid from the tray above the feed tray

        # create the streams associated with the column
        # tray liquid and vapor streams
        self.tray_liq_stream = []
        for i_tray in range(self.n_trays):
            name = self.name + 'Tray' + str(i_tray) + 'Liquid'
            #            self.tray_liq_stream.append(Stream(n_comps=N_COMPS, name=name))
            self.tray_liq_stream.append(
                Stream(n_comps=self.feed_stream_liq.n_comps, name=name))

        self.tray_vap_stream = []
        for i_tray in range(self.n_trays):
            name = self.name + 'Tray' + str(i_tray) + 'Vapor'
            #            self.tray_vap_stream.append(Stream(n_comps=N_COMPS, name=name))
            self.tray_vap_stream.append(
                Stream(n_comps=self.feed_stream_liq.n_comps, name=name))

        # create the mixed stream consisting of the feed stream and the liquid from the tray above the feed tray
        name = self.name + 'MixedLiquidFeed'
        #        self.mixed_liq_feed = Stream(n_comps=N_COMPS, name=name)
        self.mixed_liq_feed = Stream(n_comps=self.feed_stream_liq.n_comps,
                                     name=name)
        self.unit_dict[name] = self.mixed_liq_feed

        # create the mixer needed to mix the liquid feed and the liquid from the tray above the feed tray
        name = self.name + 'FeedMixer'
        self.feed_mixer = Mixer(streams_in=[
            self.feed_stream_liq, self.tray_liq_stream[feed_tray + 1]
        ],
                                streams_out=[self.mixed_liq_feed],
                                name=name)
        self.unit_dict[name] = self.feed_mixer

        # create trays
        self.trays = []
        for i_tray in range(self.n_trays):
            name = self.name + 'Tray' + str(i_tray)
            if i_tray == self.feed_tray:
                self.trays.append(
                    Tray(
                        liq_stream_in=self.mixed_liq_feed,
                        liq_stream_out=self.tray_liq_stream[i_tray],
                        vap_stream_in=self.tray_vap_stream[i_tray - 1],
                        vap_stream_out=self.tray_vap_stream[i_tray],
                        tray_efficiency=1,  # will be updated later
                        pressure=self.pressure,
                        name=name))
            elif i_tray == 0:
                self.trays.append(
                    Tray(
                        liq_stream_in=self.tray_liq_stream[i_tray + 1],
                        liq_stream_out=self.tray_liq_stream[i_tray],
                        vap_stream_in=self.vapor_reboil,
                        vap_stream_out=self.tray_vap_stream[i_tray],
                        tray_efficiency=1,  # will be updated later
                        pressure=self.pressure,
                        name=name))
            elif i_tray == self.n_trays - 1:
                self.trays.append(
                    Tray(
                        liq_stream_in=self.reflux,
                        liq_stream_out=self.tray_liq_stream[i_tray],
                        vap_stream_in=self.tray_vap_stream[i_tray - 1],
                        vap_stream_out=self.tray_vap_stream[i_tray],
                        tray_efficiency=1,  # will be updated later
                        pressure=self.pressure,
                        name=name))
            else:
                self.trays.append(
                    Tray(
                        liq_stream_in=self.tray_liq_stream[i_tray + 1],
                        liq_stream_out=self.tray_liq_stream[i_tray],
                        vap_stream_in=self.tray_vap_stream[i_tray - 1],
                        vap_stream_out=self.tray_vap_stream[i_tray],
                        tray_efficiency=1,  # will be updated later
                        pressure=self.pressure,
                        name=name))

        self.update_tray_efficiency(tray_efficiency)

        for s in self.tray_liq_stream:
            self.unit_dict[s.name] = s

        for s in self.tray_vap_stream:
            self.unit_dict[s.name] = s

        for s in self.trays:
            self.unit_dict[s.name] = s

        name = self.name + 'CondensateConnector'
        self.condensate_connector = Connector(self.condensate,
                                              self.tray_vap_stream[n_trays -
                                                                   1],
                                              name=name)
        self.unit_dict[name] = self.condensate_connector

        name = self.name + 'BottomsConnector'
        self.bottoms_connector = Connector(self.bottoms,
                                           self.tray_liq_stream[0],
                                           name=name)
        self.unit_dict[name] = self.bottoms_connector
예제 #15
0
from mixer import Mixer

m = Mixer()
m.init_all()
m.calibrate_all()
m.clean_gpio()
예제 #16
0
def main():
    sessions = AudioUtilities.GetAllSessions
    mixer = Mixer()

    # SysTrayIcon menu items
    menu_options = ()
    # SysTrayIcon object
    systray = SysTrayIcon(None,
                          "NK2Mixer",
                          menu_options,
                          on_quit=partial(exit_program, mixer))
    # Start SysTray
    systray.start()

    # Map physical faders to Voicemeeter faders - mappings subject to personal preference
    with voicemeeter.remote('banana', 0.0005) as vmr:
        mixer.vb_map = {
            4: vmr.inputs[3],
            5: vmr.inputs[4],
            6: vmr.inputs[1],
            7: vmr.outputs[0]
        }

    for session in sessions():
        if session.Process:
            print(session.Process.name)

    while mixer.running:
        # Receive midi message (non-blocking)
        msg = mixer.nk2_in.poll()

        # If no message exists, end current loop
        if not msg:
            continue

        # Check for select button press
        if msg.control in mixer.select_range and msg.value:
            group = mixer.groups[msg.control - mixer.select_fader_diff]

            # If program is not bound bound
            if not group.program:
                # Get active program name
                active_program = get_active_program()
                # Find audio session with matching name
                session = next(
                    (s for s in sessions()
                     if s.Process and s.Process.name() == active_program),
                    None)

                # If audio session does not exist end current loop
                if not session:
                    continue

                # Assign session to control group
                group.program = session

                # Turn on select button light
                mixer.enable_light(group.select)

                # If program is muted turn on mute button light
                if group.program.SimpleAudioVolume.GetMute():
                    mixer.enable_light(group.mute)

                print(
                    f"{group.program.Process.name()} bound to fader {group.fader}"
                )

            else:
                print(
                    f"{group.program.Process.name()} unbound from fader {group.fader}"
                )

                # Unassign session from fader
                group.program = None

                # Turn off select button light
                mixer.disable_light(group.select)
                # Turn off mute button light
                mixer.disable_light(group.mute)

        # Check for mute button press
        elif msg.control in mixer.mute_range and msg.value and mixer.groups[
                msg.control - mixer.mute_fader_diff].program:
            group = mixer.groups[msg.control - mixer.mute_fader_diff]

            # Check if program is muted
            if group.program.SimpleAudioVolume.GetMute():
                # Unmute program
                group.program.SimpleAudioVolume.SetMute(0, None)
                # Turn off mute button light
                mixer.disable_light(group.mute)

                print(
                    f"{group.program.Process.name()} unmuted (fader {group.fader})"
                )

            # If program is not muted
            else:
                # Mute program
                group.program.SimpleAudioVolume.SetMute(1, None)
                # Turn on mute button light
                mixer.enable_light(group.mute)

                print(
                    f"{group.program.Process.name()} muted (fader {group.fader})"
                )

        # Check for fader input
        elif msg.control in mixer.fader_range:
            group = mixer.groups[msg.control]

            # If fader does not have assigned program end current loop
            if not group.program:
                continue

            # Get volume control object from session
            volume = group.program._ctl.QueryInterface(ISimpleAudioVolume)
            # Convert midi value to percentage and set volume
            volume.SetMasterVolume(msg.value / 127, None)

            print(
                f"{group.program.Process.name()} set to {volume.GetMasterVolume() * 100}%"
            )

        # Check for Voicemeeter fader input
        elif msg.control in mixer.vb_fader_range:
            # Map midi value (0-127) to VB appropriate gain value (-60-0)
            level = ((127 - msg.value) / 127) * -60
            # Set VB fader gain
            mixer.vb_map[msg.control].gain = level

            print(f"fader {msg.control} (VoiceMeeter) gain set to {level}")

        elif msg.control in mixer.vb_mute_range and msg.value:
            fader = msg.control - mixer.mute_fader_diff
            control = mixer.vb_map[fader]

            # ISSUE: inconsistent mute/unmute

            if control.mute:
                # Unmute VB control
                control.mute = False
                # Turn off mute button light
                mixer.disable_light(msg.control)

                print(f"fader {fader} (VoiceMeeter) unmuted")
            else:
                # Mute FB control
                control.mute = True
                # Turn on mute button light
                mixer.enable_light(msg.control)

                print(f"fader {fader} (VoiceMeeter) muted")

        # After input is processed delete message to prevent unnecessary looping
        msg = None
예제 #17
0
파일: server.py 프로젝트: timcase/foreverfm
    for handler in logging.root.handlers:
        logging.root.removeHandler(handler)
    logging.root.addHandler(customlog.MultiprocessingStreamHandler())

    log = logging.getLogger(config.log_name)
    log.info("Starting %s...", config.app_name)

    track_queue = multiprocessing.Queue(1)
    log.info("Initializing read queue to hold %2.2f seconds of audio.",
             config.frontend_buffer)
    v2_queue = BufferedReadQueue(
        int(config.frontend_buffer / SECONDS_PER_FRAME))
    info_queue = multiprocessing.Queue()

    mixer = Mixer(iqueue=track_queue,
                  oqueues=(v2_queue.raw, ),
                  infoqueue=info_queue)
    mixer.start()

    if stream:
        import brain
        Hotswap(track_queue.put, brain).start()
    Hotswap(InfoHandler.add, info, 'generate', info_queue, first_frame).start()
    Hotswap(MonitorSocket.update,
            statistician,
            'generate',
            lambda: StreamHandler.relays,
            InfoHandler.stats,
            mp3_queue=v2_queue).start()

    tornado.ioloop.PeriodicCallback(
예제 #18
0
# Entry point of the program - initializes mixer and client
# Also for basic settings

from mixer import Mixer
from client import Client

# Settings for testing
'''
url = "broker.mqttdashboard.com"
topic = "haw/dmi/mt/its/ss17/ambientbox"
user = ""
pw = ""
'''

# Settings for HAW
url = "diginet.mt.haw-hamburg.de"
topic = "ambientbox"
user = "******"
pw = "schuh+-0"

# Mixer Settings
loopThreshold = 10	# Sounds shorter than this (seconds) will not be looped nonstop but rather be played in intervals depending on the volume of the channel
maxLoopLength = 30	# Short sounds (see above) may be repeated at least every amount of seconds this is set to

mixer = Mixer(loopThreshold, maxLoopLength)
Client(url, topic, user, pw, mixer)
예제 #19
0
def main():
    global DISPLAYSURF, FPSCLOCK, FPS

    pygame.init()
    FPSCLOCK = pygame.time.Clock()
    FPS = 60
    pygame.key.set_repeat(int(1000 / FPS))

    global XMARGIN, YMARGIN, BOXSIZE

    width, height = pygame.display.Info().current_w, pygame.display.Info(
    ).current_h

    maxHeight = int(0.8 * height)
    maxWidth = int(1.5 * maxHeight)

    XMARGIN = YMARGIN = 0
    BOXSIZE = 16
    maxBoxSize = int((maxWidth / 15))
    for scale in range(2, 5):
        if BOXSIZE * scale > maxBoxSize:
            break
    scale -= 1
    scale = 3
    BOXSIZE *= scale

    windowWidth = 15 * BOXSIZE
    windowHeight = 10 * BOXSIZE

    DISPLAYSURF = pygame.display.set_mode((windowWidth, windowHeight))
    pygame.display.set_caption('Map Test')
    DISPLAYSURF.set_colorkey((255, 0, 255))

    mixer = Mixer()

    player = Player(scale,
                    party=[
                        get_pokemon(132, level=50),
                        random_pokemon(level=50),
                        random_pokemon(level=50)
                    ])
    # player = Player()

    playerSprite = pygame.sprite.Group()
    playerSprite.add(player)

    startX = player.get_position()[0] - 7
    endX = startX + 15

    startY = player.get_position()[1] - 5
    endY = startY + 11

    mainMap = load_map_square('main_map_full_test')
    mapSquare = mainMap.tiles
    mapImages, mapDecorations = mainMap.new_screen_images_array(
        player, tileSize=BOXSIZE)

    mixer.play_song(mainMap.tiles[player.x][player.y].group)

    global mapCoords
    mapCoords = []
    for x in range(len(mapSquare)):
        column = []
        for y in range(len(mapSquare)):
            column.append((x, y))
        mapCoords.append(column)

    count = 0
    maxCount = 4
    running = True
    lastKeys = None
    change = True
    while running:
        offsetX, offsetY = 0, 0

        count += 1
        if count == maxCount:
            count = 0

        position = player.get_position()
        move = (0, 0)

        columns = mapCoords[startX:endX]
        displayArea = [y[startY:endY] for y in columns]

        for event in pygame.event.get():
            if event.type == pygame.QUIT or (event.type == KEYUP
                                             and event.key == K_ESCAPE):
                running = False

            elif event.type == KEYDOWN:
                if event.key == K_SPACE:
                    interact(mainMap, player)
                elif event.key in [K_UP, K_w]:
                    move = (0, -1)

                elif event.key in [K_DOWN, K_s]:
                    move = (0, 1)

                elif event.key in [K_LEFT, K_a]:
                    move = (-1, 0)

                elif event.key in [K_RIGHT, K_d]:
                    move = (1, 0)

            elif event.type == KEYUP:
                if event.key == K_x:
                    player.toggle_run()

                elif event.key == K_b:
                    player.toggle_bike()
                    change = True

                elif event.key == K_v and mainMap.surfable(player):
                    player.toggle_surf()
                    move = player.facing
                    change = True

                else:
                    pass

        if move != (0, 0):
            if mainMap.passable(player, move):
                change = True
                player.update(move)
                do_move(mapImages, playerSprite, mapDecorations, player, move)
                mapImages, mapDecorations = update_map(mainMap, mapImages,
                                                       mapDecorations, player,
                                                       move)
            elif mainMap.jumpable(player, move):
                change = True
                move = tuple_add(move, move)
                player.update(move)
                do_jump(mapImages, playerSprite, mapDecorations, player, move)
                mapImages, mapDecorations = update_map(mainMap, mapImages,
                                                       mapDecorations, player,
                                                       move)
            else:
                change = True
                player.turn(move)

            if mainMap.encounter_tile(player):
                # print('encounter')
                encounterPokemon = random_pokemon(level=50)
                WildBattle(DISPLAYSURF, mixer, player, encounterPokemon)
                # DISPLAYSURF.set_mode((windowWidth, windowHeight))

        # keys = pygame.key.get_pressed()
        # if keys[K_SPACE]:
        # 	interact(mainMap, player)

        # elif keys[K_UP] or keys[K_w]:
        # 	move = (0, -1)
        # elif keys[K_DOWN] or keys[K_s]:
        # 	move = (0, 1)
        # elif keys[K_LEFT] or keys[K_a]:
        # 	move = (-1, 0)
        # elif keys[K_RIGHT] or keys[K_d]:
        # 	move = (1, 0)

        # if move != (0, 0):

        # 	if count == 0 and mainMap.passable(player, move):
        # 		change = True
        # 		offsetX = int(1*BOXSIZE/4) * move[0]
        # 		offsetY = int(1*BOXSIZE/4) * move[1]

        # 	elif count == 1 and mainMap.passable(player, move):
        # 		change = True
        # 		offsetX = int(2*BOXSIZE/4) * move[0]
        # 		offsetY = int(2*BOXSIZE/4) * move[1]

        # 	elif count == 2 and mainMap.passable(player, move):
        # 		change = True
        # 		offsetX = int(3*BOXSIZE/4) * move[0]
        # 		offsetY = int(3*BOXSIZE/4) * move[1]

        # 	elif count == 3 and mainMap.passable(player, move):
        # 		change = True
        # 		startX += move[0]
        # 		endX += move[0]
        # 		startY += move[1]
        # 		endY += move[1]
        # 		offsetX, offsetY = 0, 0

        # 		player.update(move)

        # 		mapImages = update_map(mainMap, mapImages, player, move)

        # 	elif count == 3:
        # 		change = True
        # 		player.turn(move)

        if change:
            offsetX, offsetY = 0, 0

            draw_screen(mapImages, playerSprite, mapDecorations,
                        (offsetX, offsetY))

            pygame.display.update()
            change = False

            # print(mainMap.tiles[player.x][player.y].group)
            if player.isBiking:
                mixer.play_song('Cycling')
            elif player.isSurfing:
                mixer.play_song('Surfing')
            else:
                mixer.play_song(mainMap.tiles[player.x][player.y].group)

        FPSCLOCK.tick(FPS)
예제 #20
0
#     target_corners[7, :] = target_bbox[1]

#     return target_bbox, target_corners

if __name__ == "__main__":
    # dataset = GRASSNewDataset('D:\\CMPT 764\\chairs_dataset',3)
    agg = Aggregator()
    #mixer = Mixer('Chair', 5, ['172', '182', '178', '517', '197'])
    #mixer = Mixer('Chair', 5, ['172', '173', '182', '178', '686'])
    #mixer = Mixer('Chair', 5, ['178', '348', '456', '504', '518'])

    #test_models: A = [197, 41103, 37574], B = [45075, 40015, 39696, 37658, 36193], C = [309, 1325, 3244, 36881, 37614, 40403, 42663, 37989, 3223, 41656]
    #mixer = Mixer('Chair', 3, ['197', '41103', '37574'])
    #mixer = Mixer('Chair', 5, ['45075', '40015', '39696', '37658', '36193'])
    mixer = Mixer('Chair', 10, [
        '309', '1325', '3244', '36881', '37614', '40403', '42663', '37989',
        '3223', '41656'
    ])
    #mixer.show_data_meshes()

    # extractor = RandomizedExtractor(dataset)
    mixer.show_data_meshes()

    for i in range(15):
        mixer.reset_target()
        print("Starting for model number ", i)

        mixer.mix_parts()
        renderMeshFromParts_new(mixer.get_target_mesh().parts, i)

    # for i in range(len(mixer.dataset)):
    #     # mesh = mixer.dataset[i]