---
# System prepended metadata

title: Project documentation template

---

---
title: 'Project documentation template'
disqus: hackmd
---

Sound Graphy
===

## 目次

[TOC]

## Sound Graphy

- ``"http://$(Sound Graphy Webのアドレス)"``にアクセス

![](https://i.imgur.com/IttrLYL.png)

---

### Sound Graphy Webの使い方

特定のHakkoの音量情報を取得するリクエスト方法を例に見ていきます．

#### URL

``"http://$(Sound Graphy Webのアドレス)/api/hakkos/$(Hakkoの識別コード)/log?from=2019-08-31"``

##### hakkos/#{Hakkoの識別コード}/log

- これはURLのエンドポイントです．これは複数存在し，それぞれデータを取得したり登録したりします．

##### from=2019-08-31

- 結果をフィルターするクエリです．どのようなフィルターが存在するかは，各エンドポイントの詳細を見てください．

#### Ahtorization

リクエストには認証を必要とします．認証はAuthorizationヘッダーを利用して行います．

``"Authorization: Bearer $api-key"``

#### MIMEタイプ

リクエストのMIMEタイプはapplication/jsonを指定してください．

``"Content-Type: application/json"``

#### リクエストの送信

必要なすべての情報がそろったのでリクエストを送信してみます．

```bash
curl -X GET http://$(Sound Graphy Webのアドレス)/api/Hakkos/ffffffffffffffffffffffffffffffff/log?from=2019-01-01T00:00:00Z \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $api-key" 
```
---

#### Hakkoの情報を取得する

HakkoのUUIDをもとに情報を取得します．

```bash
curl -X GET http://$(Sound Graphy Webのアドレス)/api/Hakkos/$(Hakkoの識別コード) \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $api-key"
```

##### レスポンス

200 - Hakkoの情報
```json
{
  "data":
    {"hakko":
      "uuid": "string",
      "name": "string",
      "description": number,
      "latitude": number,
      "longitude": number
    }
}
```

401 - 認証エラー
```json
{
  "message": "Unauthorized"
}
```

404 - リソースエラー
```json
{
  "message": "Not Found"
}
```


#### Hakkoのログを取得する

```bash
curl -X GET http://$(Sound Graphy Webのアドレス)/api/Hakkos/$(Hakkoの識別コード)/log \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $api-key" 
```

**from** - 日時を指定することで取得するログの日時を絞ることができます．日付の指定はISO8601:2004形式で行います(例:from="2019-01-01T00:00:00Z")．

**until** - 日時を指定することで取得するログの日時を絞ることができます．日付の指定はISO8601:2004形式で行います(例:from="2019-01-01T00:00:00Z")．

**limit** - 取得数を指定します(例:limit=5).デフォルトでは日付の新しい方から10件になっています．

##### レスポンス

200 - Hakkoのログ
```json
{
  "data":
    {"uuid": "string",
     "log":
       [
         {
           "max": integer,
           "ave": integer,
           "min": integer,
           "created_at": "string",
           "startd_at": "string",
           "ended_at": "string"
         }
       ,
       ...
       ]
    }
}
```

401 - 認証エラー
```json
{
  "message": "Unauthorized"
}
```

404 - リソースエラー
```json
{
  "message": "Not Found"
}
```

#### Illuminatorの情報を取得する

```bash
curl -X GET http://$(Sound Graphy Webのアドレス)/api/Hakkos/$(Illuminatorの識別コード) \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $api-key" 
```

##### レスポンス

200 - Illuminatorの情報
```json
{
  "data":
    {
      "illuminator":
      "uuid": "string",
      "name": "string",
      "description": number,
      "latitude": number,
      "longitude": number
    }
}
```

401 - 認証エラー
```json
{
  "message": "Unauthorized"
}
```

404 - リソースエラー
```json
{
  "message": "Not Found"
}
```

#### Illuminatorのログを取得する

```bash
curl -X GET http://$(Sound Graphy Webのアドレス)/api/Hakkos/$(Illuminatorの識別コード)/log \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $api-key" 
```

**from** - 日時を指定することで取得するログの日時を絞ることができます．日付の指定はISO8601:2004形式で行います(例:from="2019-01-01T00:00:00Z")．

**until** - 日時を指定することで取得するログの日時を絞ることができます．日付の指定はISO8601:2004形式で行います(例:from="2019-01-01T00:00:00Z")．

**limit** - 取得数を指定します(例:limit=5).デフォルトでは日付の新しい方から10件になっています．

##### レスポンス

200 - Illuminatorのログ
```json
{
  "data":
    {"uuid": "string",
     "log":
       [
         {
           "max": integer,
           "ave": integer,
           "min": integer,
           "created_at": "string",
           "startd_at": "string",
           "ended_at": "string"
         }
       ,
       ...
       ]
    }
}
```

401 - 認証エラー
```json
{
  "message": "Unauthorized"
}
```

404 - リソースエラー
```json
{
  "message": "Not Found"
}
```

### Sound Graphy Webの使用例

その部屋の賑やかさを視覚的に表示するデモサイトです．

http://$(Sound Graphy Webのアドレス)

このように定期的にAPIからデータを取得することで

他にも，
- 飲食店で，店内の賑やかさから店内BGMの音量やジャンルを雰囲気に合ったものに自動的に変更する．
- イベント会場で、周囲の盛り上がり・賑やかさを視覚化したり、地図に反映してスムーズな移動を補助する。

等に使用することが考えられます．

---

# Hakko

### Hakkoの導入

**必要なもの** - Hakko本体，モバイルバッテリー/USB ACアダプター もしくは 5~9Vの電池

#### USB端子を使用する場合

モバイルバッテリーもしくはUSB ACアダプターとHakkoのmini USB端子を接続してください．

#### ピンを使用する場合

Hakkoの5Vピンに電池の+，GNDピンに電池の-を接続してください．

---

## Illuminator

### Illuminatorの使い方

Illuminatorは、周囲の音声を可視化するアプリケーションです．

また、PC上にある音楽ファイルを再生することも可能です．

### Illuminatorの使用例

周囲の賑やかさを可視化し，メディアプレーヤーとして利用することができます．

### Illuminatorの導入

1. 「Illuminator_app_production.zip」を解凍する(図4-1).
2. 「Illuminator_Unity.exe」を実行する.
3. ウィンドウサイズやグラフィックなどを設定し、「Play!」をクリックします(図4-2).

![解凍後のIlluminator_app_production](https://i.imgur.com/JL9w6z9.png)
<div style="text-align: center;">
図4-1 解凍後のIlluminator_app_production
</div>

<br>

![](https://i.imgur.com/LFLxYjX.png)
<div style="text-align: center;">
図4-2 Illuminator_Unity.exe実行後の画面
</div>

<br>

![](https://i.imgur.com/lIYgqv4.png)
<div style="text-align: center;">
図4-3 「Play!」選択後の画面
</div>

#### マイクからの入力を使用する場合

**必要なもの** - マイク(パソコン備え付けのものでも可)

4. 「マイク入力」を選択する.
5. 終了する場合は「Esc」を押して図4-3の画面に戻り「Esc」を押す

#### 音声データを使用する場合

**必要なもの** - mp3/wav/ogg形式の音声データ

4. PC上にある音楽ファイルを再生する場合は、「ファイルから選択」をクリックし、再生したいファイルを選択します(図4-4)。
5. 選択が終了したら、「このリストで始める」をクリックします。
6. 終了する場合は「Esc」を押して図4-3の画面に戻り「Esc」を押す

<br>

![](https://i.imgur.com/WKxCgH7.png)
<div style="text-align: center;">
図4-4 ファイル選択画面
</div>
