Skip to content

Commit ce61838

Browse files
committed
updated docs
1 parent 277f5f3 commit ce61838

File tree

10 files changed

+63
-69
lines changed

10 files changed

+63
-69
lines changed

docs/acknowledgments.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Acknowledgements
22

3-
The [**Cinemate**](https://github.com/Tiramisioux/cinemate) stack is built on top of several open-source projects. Special thanks to all authors!
3+
The [**Cinemate**](https://github.com/Tiramisioux/cinemate) stack is built on of several open-source projects. Special thanks to all authors!
44

55
- [**CinePi-raw**](https://github.com/cinepi/cinepi-raw) – Csaba Nagy
66
- [**IMX585 and IMX283 drivers**](https://github.com/will127534) – Will Whang

docs/audio-recording.md

Lines changed: 40 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,54 @@
11
# Audio recording (experimental)
22

3-
Cinemate records audio alongside the image sequence. Support is currently limited to a few USB microphones with hard coded configurations:
3+
Cinemate records audio alongside the image sequence. Audio is written as `.wav` files into the same folder as the `.dng` frames. The implementation is still experimental and audio/video synchronization needs further investigation.
4+
5+
## Supported microphones
46
- **RØDE VideoMic NTG** – recorded in stereo at 24‑bit/48 kHz.
57
- **USB PnP microphones** – recorded in mono at 16‑bit/48 kHz.
68

7-
Other class‑compliant USB microphones are now detected automatically by probing the ALSA hardware devices reported by `arecord -l`. Cinemate will fall back to using the matching USB device (via `plughw:<card>,<device>`) if the `mic_24bit` or `mic_16bit` aliases are not available.
8-
9-
Audio is written as `.wav` files into the same folder as the `.dng` frames. The implementation is still experimental and audio/video synchronization needs further investigation.
10-
11-
### .asoundrc Setup
129

13-
For `dsnoop` support, create a `~/.asoundrc` in home directory:
1410

15-
```bash
16-
nano ~/.asoundrc
17-
```
11+
## .asoundrc Setup
1812

19-
Paste this into the file:
13+
For `dsnoop` support, create a `~/etc/asound.conf`:
2014

2115
```bash
2216

23-
pcm.dsnoop_24bit {
24-
type dsnoop
25-
ipc_key 2048
26-
slave {
27-
pcm "hw:Device,0"
28-
channels 2
29-
rate 48000
30-
format S24_3LE
31-
period_size 1024
32-
buffer_size 4096
33-
}
34-
}
35-
36-
pcm.dsnoop_16bit {
37-
type dsnoop
38-
ipc_key 2049
39-
slave {
40-
pcm "hw:Device,0"
41-
channels 1
42-
rate 48000
43-
format S16_LE
44-
period_size 1024
45-
buffer_size 4096
46-
}
47-
}
48-
49-
pcm.mic_24bit {
50-
type plug
51-
slave.pcm "dsnoop_24bit"
52-
}
53-
54-
pcm.mic_16bit {
55-
type plug
56-
slave.pcm "dsnoop_16bit"
57-
}
17+
sudo tee /etc/asound.conf >/dev/null <<'EOF'
18+
# --- Hardware handle (use stable card name; change "NTG" if your card shows a different name in `arecord -l`)
19+
pcm.mic_hw {
20+
type hw
21+
card "NTG"
22+
device 0
23+
}
24+
25+
# --- One shared dsnoop backend pinned to the mic's native mode (RØDE NTG: S24_3LE @ 48k, stereo)
26+
pcm.mic_dsnoop {
27+
type dsnoop
28+
ipc_key 5978
29+
ipc_perm 0666
30+
ipc_key_add_uid false
31+
slave {
32+
pcm "hw:CARD=NTG,DEV=0"
33+
format S24_3LE
34+
rate 48000
35+
channels 2
36+
}
37+
bindings.0 0
38+
bindings.1 1
39+
}
40+
41+
# --- Front-ends: let plug adapt whatever the app asks for (stereo 24-bit or mono 16-bit)
42+
pcm.mic_24bit {
43+
type plug
44+
slave.pcm "mic_dsnoop"
45+
}
46+
47+
pcm.mic_16bit {
48+
type plug
49+
slave.pcm "mic_dsnoop"
50+
}
51+
EOF
5852

5953
```
6054

docs/backing-up-sd-card.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Backing up the SD card
22

3-
## To create a compressed image using PiShrink
3+
## Create a compressed image using PiShrink
44

55
```shell hl_lines="2 3"
66
sudo bash -Eeuo pipefail -c '

docs/cinepi-multi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# How Cinemate launches cinepi-raw
22

3-
`cinemate/src/module/cinepi_multi.py` starts one `cinepi-raw` process per connected camera. It takes camera information `cinemate/src/module/sensor_detect.py` and user settings from `cinemate/src/module/settings.json` to build the command and command-line flags passed to `cinepi-raw`.
3+
The file `cinemate/src/module/cinepi_multi.py` starts one `cinepi-raw` process per connected camera. It takes camera information `cinemate/src/module/sensor_detect.py` and user settings from `cinemate/src/module/settings.json` to build the command and command-line flags passed to `cinepi-raw`.
44

55

66
## Detecting Cameras

docs/cli-commands.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ corresponding controller methods.
1313
cinemate # start cinemate manually
1414

1515
!!! note ""
16+
1617
Commands without an explicit argument will toggle the current state when possible (e.g. `set fps lock` flips the lock; `set fps lock 1` forces it on).
1718

1819
!!! note ""
20+
1921
All of the commands below can be easily mapped to GPIO buttons rotary encoders and other input devices. See [this section](settings-json.md) for how to configure the settings file.
2022

2123

docs/cli-user-guide.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Using CinePi-RAW from the terminal
22

3-
Here is how you can operate **CinePi-raw** from the command line.
4-
53
## Checking available options
64

75
Before running the program you can view all command‑line flags with:
@@ -14,7 +12,7 @@ This prints a long list of options supported by the application. It includes the
1412

1513
## Camera modes
1614

17-
CinePi-raw uses **Libcamera** to talk to your Raspberry Pi camera module. Each sensor supports one or more *modes*, which define the resolution and bit depth of the RAW images that the sensor can produce. A mode is written as:
15+
CinePi-Raw uses **Libcamera** to talk to your Raspberry Pi camera module. Each sensor supports one or more *modes*, which define the resolution and bit depth of the RAW images that the sensor can produce. A mode is written as:
1816

1917
```
2018
--mode 2028:1080:12:U

docs/compiling-cinepi-raw.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Recompiling cinepi-raw
2-
Compiling cinepi-raw
32

4-
For easy later rebuilding and installation of cinepi-raw you can create the file compile-raw.sh.
3+
For easy later rebuilding and installation of cinepi-raw you can create the file `compile-raw.sh`.
54

65
```shell
76
nano compile-raw.sh

docs/sensor.sizes.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ C and CS lenses were designed for small‑format video and security cameras, so
2020

2121
---
2222

23-
## 4  What if I really want wide shots?
23+
## What if I really want wide shots?
2424

2525
You have two realistic options:
2626

2727
1. **Speed‑boosters and focal reducers**
2828
   These compress a larger image circle down onto the small sensor, regaining some angle of view. They cost more than the camera and introduce extra optical surfaces, but can work in a pinch.
2929
2. **A bigger sensor**
30-
   Stepping up to something like the IMX585 (“1/1.2 inch”) cuts the crop factor roughly in half. At that point, adapting Micro‑Four‑Thirds or vintage 35 mm lenses begins to make practical sense.
30+
   Stepping up to something like the IMX585 (“1/1.2 inch”) cuts the crop factor roughly in half. At that point, adapting Micro‑Four‑Thirds or vintage 35 mm lenses begins to make practical sense.
3131

3232
---
3333

34-
## 5  Buying roadmap for beginners
34+
##  Buying tips for beginners
3535

3636
1. **Start with the stock 6 – 12 mm Raspberry Pi zoom**
3737
   It teaches you which focal lengths you genuinely use.

docs/storage-preroll.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
# Storage pre-roll warm-up
22

3-
Cinemate includes an automatic "storage pre-roll" that records and discards a short clip to make sure new media can keep up before you roll on something important.【F:src/module/storage_preroll.py†L1-L57】 The warm-up runs the recorder at full speed so SSDs spin up, controllers cache their write tables and the rest of the pipeline has a chance to stabilise.
3+
Cinemate includes an automatic "storage pre-roll" that records and discards a short clip to make sure new media can keep up. The warm-up runs the recorder at full speed so SSDs spin up, controllers cache their write tables and the rest of the pipeline has a chance to stabilise.
44

55
## When the pre-roll runs
66

7-
- **On startup:** after a brief settle delay, the helper checks whether the RAW volume is mounted and triggers a warm-up run if so.【F:src/module/storage_preroll.py†L58-L96】
8-
- **Whenever storage mounts:** the SSD monitor emits an event that immediately schedules another pre-roll so freshly attached drives are exercised before you use them.【F:src/module/storage_preroll.py†L40-L92】
9-
- **On demand:** you can type `storage preroll` in the Cinemate CLI to queue a run manually. The command is ignored while a pre-roll is already active so repeated presses do not stack up.【F:src/module/cli_commands.py†L64-L72】【F:src/module/storage_preroll.py†L40-L92】
7+
- **On startup:** after a brief settle delay, the helper checks whether the RAW volume is mounted and triggers a warm-up run if so.
108

11-
The module keeps a lock so only one warm-up runs at a time and exposes the `storage_preroll_active` Redis key to let the UI show progress.【F:src/module/storage_preroll.py†L26-L74】
9+
- **Whenever storage mounts:** the SSD monitor emits an event that immediately schedules another pre-roll so freshly attached drives are exercised before you use them.
10+
11+
- **On demand:** you can type `storage preroll` in the Cinemate CLI to queue a run manually. The command is ignored while a pre-roll is already active so repeated presses do not stack up.
12+
13+
The module keeps a lock so only one warm-up runs at a time and exposes the `storage_preroll_active` Redis key to let the UI show progress.
1214

1315
## What happens during a run
1416

15-
1. The helper aborts if no media is mounted or if a real recording is in progress; it will try again after the next trigger.【F:src/module/storage_preroll.py†L108-L133】
16-
2. It records the user's current FPS choice, switches the camera to the maximum FPS supported by the sensor/mode and raises a "pre-roll active" flag so other systems (such as the `rec` command) leave it alone.【F:src/module/storage_preroll.py†L134-L170】【F:src/module/cinepi_controller.py†L523-L542】
17-
3. Cinemate starts recording, waits until the REC flag is live, keeps rolling for the configured duration (two seconds by default) and then stops once all file buffers have flushed to disk.【F:src/module/storage_preroll.py†L134-L170】
18-
4. Finally, it restores the previous FPS, clears the activity flag and deletes any temporary clip directories created during the warm-up so the test footage never clutters your drive.【F:src/module/storage_preroll.py†L170-L208】
17+
1. The helper aborts if no media is mounted or if a real recording is in progress; it will try again after the next trigger.
18+
19+
2. It records the user's current FPS choice, switches the camera to the maximum FPS supported by the sensor/mode and raises a "pre-roll active" flag so other systems (such as the `rec` command) leave it alone.
1920

20-
## Why it matters
21+
3. Cinemate starts recording, waits until the REC flag is live, keeps rolling for the configured duration (two seconds by default) and then stops once all file buffers have flushed to disk.
2122

22-
Running a quick high-FPS burst before your first take helps avoid storage hiccups (for example, when an SSD controller is still negotiating link speed or establishing its allocation tables). Because Cinemate blocks normal `rec` requests while a pre-roll is active, you will always start your real recording on a fresh, warmed-up drive.【F:src/module/storage_preroll.py†L134-L208】【F:src/module/cinepi_controller.py†L523-L542】 Trigger it manually after swapping drives or when you have not recorded for a while to ensure peak performance.
23+
4. After recording the 2 second temporary clip, it restores the previous FPS, clears the activity flag and deletes the temporary clip directory.

docs/system-services.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Cinemate uses three system services for its operation.
44

55
## cinemate-autostart.service
66

7-
Responsible for autostart of Cinemate on boot. By default, it is turned off on the [downloadable image file](https://github.com/Tiramisioux/cinemate/releases/tag/3.1).
7+
Responsible for autostart of Cinemate on boot. By default, it is turned off on the [downloadable image file](https://github.com/Tiramisioux/cinemate/releases/tag/3.2).
88

99
Starting in v3.2 the service now waits for the camera sensor to come online before launching the UI. The helper script `/usr/local/bin/camera-ready.sh` polls `cinepi-raw --list-cameras` for up to 30 seconds and logs progress to the systemd journal so Cinemate does not start with a black screen if the IMX sensor is still initialising.
1010

0 commit comments

Comments
 (0)