4 次代碼提交 6400ec29e7 ... 33602747d4

作者 SHA1 備註 提交日期
  Andrey Sobolev 33602747d4 merged conflicts 10 月之前
  Andrey Sobolev b51004d27f some fixes 10 月之前
  Andrey Sobolev cf95d7771d values for new amplifier 10 月之前
  Andrey Sobolev 562e801e81 fixes to sound controllers 10 月之前
共有 2 個文件被更改,包括 32 次插入6 次删除
  1. 29 6
      controllers/sound.ipynb
  2. 3 0
      controllers/sound.py

+ 29 - 6
controllers/sound.ipynb

@@ -165,6 +165,7 @@
     "                time.sleep(0.005)\n",
     "                \n",
     "        stream.stop()\n",
+    "        stream.close()\n",
     "        print('Sound stopped')\n",
     "\n",
     "        \n",
@@ -207,6 +208,7 @@
     "            self.stream.write(self.data[start_idx:end_idx])\n",
     "            \n",
     "        self.stream.stop()\n",
+    "        self.stream.close()\n",
     "        \n",
     "        \n",
     "class SoundControllerPR:\n",
@@ -305,7 +307,8 @@
     "    def stop(self):\n",
     "        for t in self.timers:\n",
     "            t.cancel()\n",
-    "        self.stream.stop()"
+    "        self.stream.stop()\n",
+    "        self.stream.close()"
    ]
   },
   {
@@ -376,25 +379,45 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 89,
    "metadata": {},
    "outputs": [],
    "source": [
-    "sc = SoundControllerPR(1, SoundControllerPR.default_cfg)"
+    "sound_cfg = {\n",
+    "    \"device\": [1, 24],\n",
+    "    \"n_channels\": 14,\n",
+    "    \"sounds\": {\n",
+    "        \"noise\": {\"amp\": 0.01, \"duration\": 10.0, \"channels\": [6]},  # 69 DBA (amp 0.01, volume 0.1)\n",
+    "        \"target\": {\"freq\": 660, \"amp\": 0.3, \"duration\": 0.015, \"window\": 0.005, \"iti\": 0.1, \"number\": 10, \"channels\": [5]}\n",
+    "    },\n",
+    "    \"sample_rate\": 44100,\n",
+    "    \"volume\": 0.1,\n",
+    "    \"file_path\": \"sounds.csv\"\n",
+    "}"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 87,
    "metadata": {},
    "outputs": [],
    "source": [
-    "sc.play_non_blocking('target', 0)"
+    "sc = SoundControllerPR(1, sound_cfg)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sc.noise()  # 5 is 3\n",
+    "#sc.play_non_blocking('noise', 0)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
    "metadata": {},
    "outputs": [],
    "source": [

+ 3 - 0
controllers/sound.py

@@ -148,6 +148,7 @@ class SoundController:
                 time.sleep(0.005)
                 
         stream.stop()
+        stream.close()
         print('Sound stopped')
 
         
@@ -190,6 +191,7 @@ class ContinuousSoundStream:
             self.stream.write(self.data[start_idx:end_idx])
             
         self.stream.stop()
+        self.stream.close()
         
         
 class SoundControllerPR:
@@ -289,3 +291,4 @@ class SoundControllerPR:
         for t in self.timers:
             t.cancel()
         self.stream.stop()
+        self.stream.close()