Commit Graph

25 Commits

Author SHA1 Message Date
Peter L Jones
eef2973ae0 Save the source 2020-07-02 20:07:40 +01:00
Stefan Weil
3e3fe44a7f Fix some typos (found by codespell)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
2020-06-30 12:59:53 +02:00
Peter L Jones
d3059b608a Move the source 2020-06-28 08:48:48 +01:00
Peter L Jones
40b699e0a5 Save the source 2020-06-28 08:48:48 +01:00
Volker Fischer
1c4fe003d9 fix for Copyright -> add a date (see #341) 2020-06-08 23:20:25 +02:00
Volker Fischer
9abb853fe1 fixed "*No copyright*" (see #341) 2020-06-08 23:02:43 +02:00
Volker Fischer
44e883900b fixed Free Software Foundation address (see #341) 2020-06-08 22:58:11 +02:00
Peter L Jones
552b3ba5f3 #315 Provide Audacity "list of file" for session 2020-06-06 16:05:32 +01:00
Peter L Jones
d33612721e #228 Enable/Disable recording from command line 2020-05-30 18:04:55 +01:00
Peter L Jones
0f8d15f343 Initial Recording GUI
Issue #228.

Display the recorder state and latest recording directory and
allow a new recording to be requested.
2020-05-25 21:56:40 +01:00
Peter L Jones
aed6a432ab #234 Fix from @Snayler for offset problem in recorder 2020-05-22 18:02:50 +01:00
Peter L Jones
4bf5176e6a Request new recording on SIGUSR1 2020-05-15 21:52:33 +01:00
Peter L Jones
376ce88f76 Recorder support for session cut 2020-05-15 20:05:20 +01:00
Peter L Jones
b60c3cab7b Handle server application closure more cleanly 2020-05-10 18:20:57 +01:00
Peter L Jones
a78ac71798 Pass frame size to frame handlers 2020-04-10 18:36:13 +01:00
Peter L Jones
ec2673eaa1 Pass frame size to Reaper project from recorder 2020-04-10 18:36:13 +01:00
Peter L Jones
e4ac2f472d Use variable frame size in Reaper project 2020-04-10 18:36:13 +01:00
Peter L Jones
a80b437858 Pass frame size to recorder 2020-04-10 18:36:13 +01:00
Peter L Jones
3831e83535 Migrate off ConsoleWriterFactory 2020-04-10 18:36:13 +01:00
Daniel Masato
26ccef90fc Fix server bug preventing recording directory from being recognised after successful creation
When a recording directory doesn't exist, the server creates it successfully but the QFileInfo
object holding the directory information is not updated as the information is cached by default.
The server then exits unexpectedly as the check on the directory existence incorrectly fails.
Disable caching to resolve the issue.
2020-03-23 19:31:38 +00:00
Volker Fischer
11938e960b use #pragma once 2019-07-09 08:52:38 +02:00
Peter L Jones
e3025e5492 Fix wave file header lengths 2019-04-21 22:13:07 +01:00
Volker Fischer
30b5833d3d - remove unnecessary command line argument (if directory is given, the recording is enabled automatically
- jamrecorder is not a pointer in the class but an object now
- only call jamrecorder functions if it is enabled
2019-04-11 22:25:36 +02:00
Volker Fischer
0dbef268a3 added GPL headers 2019-04-10 20:00:54 +02:00
Peter L Jones
8c1deffda7 Add recording support with Reaper Project generation
Includes the following changes

* Initial .gitignore
Administrative

* Fix up warning message
* Not all Windows file systems are case insensitive
Bugfixes

* (Qt5) Use QCoreApplication for headless
Possible solution to get the application to run as a headless server but it loses the nice history graph, so not ideal.

* Avoid ESC closing chat
Because ESC shouldn't close the chat window. Or the main app window.

* Add console logging support for Windows
Whilst looking for the headless support, I found this idea for Windows logging.  New improved version.  This makes far fewer changes.

----

* Add recording support with Reaper Project generation
The main feature!
    * New -r option to enable recording of PCM files and conversion to Reaper RPP with WAV files
    * New -R option to set the directory in which to create recording sessions
    You need to specify the -R option, there's no default... so I guess -r and -R could be combined.
    * New -T option to convert a session directory with PCM files into a Reaper RPP with WAV files
    You can use -T on "failed" sessions, if the -r option captures the PCMs but the RPP converter doesn't run for some reaon. (It was useful during development, maybe less so once things seem stable.)

The recorder is implemented as a new thread with queuing from the main "real time" server thread.

When a new client connects or if its audio format changes (e.g. mono to stereo), a new RIFF WAVE file is started.  Each frame of decompressed audio for each client written out as LPCM to the file.  When the client disconnects, the RIFF WAVE headers are updated to reflect the file length.

Once all clients disconnect, the session is considered ended and a Reaper RPP file is written.
2019-04-03 18:12:45 +01:00