1つのチャンネル内で複数のサウンドをつなげて鳴らす。
成果物
コード
#!/usr/bin/env python3 # coding: utf8 import pyxel class App: def __init__(self): pyxel.init(96, 54, caption="Sound API. Multi sounds.") self.__set_sounds() self.__play() pyxel.run(self.update, self.draw) def update(self): if pyxel.btnp(pyxel.KEY_SPACE): if self.is_play: self.__stop() else: self.__play() def draw(self): pyxel.cls(0) pyxel.text(0, 0, 'Please SPACE key: ' + ('PLAY' if self.is_play else 'STOP'), 7) def __play(self): pyxel.play(self.ch1, self.sounds, loop=True) self.is_play = True def __stop(self): pyxel.stop() self.is_play = False def __set_sounds(self): self.ch1 = 0 self.sounds = [0, 1] self.__set_sound00() self.__set_sound01() def __set_sound00(self): # Diatonic C Major self.__set_sound(0, "c2d2e2f2g2a2b2c3") def __set_sound01(self): # Diatonic D Major self.__set_sound(1, "d2e2f#2g2a2b2c#3d3") def __set_sound(self, snd, notes): tones = "p" volumes = "6" effects = "n" speed = 30 pyxel.sound(snd).set( notes, tones, volumes , effects , speed, ) App()
要点
サウンドIDの配列をplay()
に渡す。複数のサウンドをつなげて再生できる。
self.sounds = [0, 1] pyxel.play(self.ch1, self.sounds, loop=True)
もちろん事前に各サウンドID0
,1
にあたるサウンドデータをset()
すること。
前回まで
- ラズパイ4Bにpyenvをインストールする(python 3.8.2)
- pyxelをインストールする(pyenv python3.8.2)
- pyxeleditorにおけるImageエディタの使い方
- pyxeleditorにおけるTileMapエディタの使い方
- pyxeleditorにおけるSoundエディタの使い方
- pyxeleditorにおけるMusicエディタの使い方
- pyxelのリソースにおける概念・制限まとめ
- pyxeleditorにおけるpyxresファイル形式まとめ
- pyxelのAPI調査
- pyxelで最小コード 窓を出す
- Pyxelで窓の境界線を消す
- 携帯ゲーム機の解像度
- pyxelで矩形を描画する
- pyxelで荒ぶる矩形
- pyxelでキーに応じて動く矩形
- pyxelで画像を描画する
- pyxelで画像をアニメーションする(スプライト。パラパラ漫画)
- pyxelで左右反転した画像を使ってアニメーションする
- pyxelでテキストを表示する
- pyxelで日本語を表示する1(ビットマップ・フォント)
- ビットマップフォント作成(TTF→PNG)
- pyxelでPNG画像をビットマップフォントとして読込・表示する(日本語表示)
- pyxelのAPIで音を鳴らす
- 画像、音声、動画をHTMLで再生する
参考
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
- pyxel 1.3.1
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux