Coder Social home page Coder Social logo

martim01 / pam Goto Github PK

View Code? Open in Web Editor NEW
139.0 139.0 9.0 174.59 MB

Audio Monitoring Software designed to run on a Raspberry pi with touchscreen

License: GNU General Public License v3.0

C 0.38% C++ 91.89% HTML 2.30% Makefile 2.79% CMake 2.18% Shell 0.01% Python 0.46%

pam's People

Contributors

martim01 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pam's Issues

Feature request: Simper user interface for operation, workflow driven.

The user interface provides access to operational and configuration elements. Some user workflows require access to both. This can be confusing for operators. It would be good to have simplified user interface option and / or hide all configuration behind one button.

Most significantly, the selection of sources, particularly AoIP streams should be available to the operator more easily. It shouldn't necessarily be part of the configuration settings and should be part of the user workflow. Maybe configuration settings could allow each source to be enabled and then a separate user workflow based selection of input be provided.

The current workflow to select AoIP source is:

  • Select the view, e.g. Screens->Meters
  • Touch unused part of screen to show menu buttons
  • Select "Settings"
  • Select AoIP (may already be selected)
  • Select AoIP stream
  • Select "Screens"

This is a lot of touches (4) to swap between sources. The user must switch context between view selection and settings adjustment which isn't intuitive.

Cannot select SPDIF output

  • Select Input Device = spdif
  • Select Output Device = spdif
    Cannot select.
  • Select Output Device = AoIP
  • Select Output Device = spdif
    Can select.

Assertion failed with multiple source pages

  • Import AoIP configuration with more than one page of AES67 streams
  • Open "Audio Monitor Source" page
  • Press the next page button
    Expected behaviour: Next page of streams shown.
    Actual behaviour: Three consecutive assertion failed errors:
../src/gtk/pen.cpp(234): assert "IsOk()" failed in GetColour(): invalid pen
../src/gtk/brush.cpp(113): assert "IsOk()" failed in GetColour(): invalid brush
../src/gtk/colour.cpp(241): assert "IsOk()" failed in GetColor(): invalid colour

compilation error

I'll try to build pam from source on pi3(raspbian) and linuxmint19 (ubuntu based) and in these two case i've got this error:
[ 91%] Linking CXX executable ../../bin/pam2
CMakeFiles/pam2.dir/pnlNetworkSetup.cpp.o : Dans la fonction « pnlNetworkSetup::ShowConnectionDetails() » :
pnlNetworkSetup.cpp:(.text+0x226) : référence indéfinie vers « NetworkControl::CheckConnection(wxString const&) »
CMakeFiles/pam2.dir/pnlNetworkSetup.cpp.o : Dans la fonction « pnlNetworkSetup::OnlstInterfacesSelected(wxCommandEvent&) » :
pnlNetworkSetup.cpp:(.text+0x89b) : référence indéfinie vers « NetworkControl::CheckConnection(wxString const&) »
collect2: error: ld returned 1 exit status
pam2/CMakeFiles/pam2.dir/build.make:913: recipe for target '../bin/pam2' failed
make[2]: *** [../bin/pam2] Error 1
CMakeFiles/Makefile2:1666: recipe for target 'pam2/CMakeFiles/pam2.dir/all' failed
make[1]: *** [pam2/CMakeFiles/pam2.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

AoIP sources shown after Remove All

  • Select "Input Device"
  • Select "AoIP"
  • Select "Manage"
  • Press and hold "Hold To Delete All"
  • Select "Close Manager"
    Expected behaviour: List of AoIP sources has been cleared.
    Actual behaviour: List of AoIP sources has remains.

Further navigation will show the list has actually cleared.

Error in readme.md

In your readme.md file you have the line Create a file called pam2.config in directory /etc/ld.so.conf.d

For me this did not work, the pam2.config file should be named pam2.conf. Otherwise the library files will not be found.

WebRTC : support Video & audio

Dear,

Don't know if in your roadmap the WebRTC will be implemented.

  • Video Thumbnail (refresh time : parameter)
  • Audio Monitoring

Best Regards,
Youssef

PTP Screen - value does not fit display

The "Offset: Average" value shown in PTP screen has such high value and resolution that it does not fit the display. The most significant digits (most important) are truncated.

Image file .img

Hi,
the documentation pam.html says that there is an image file with preinstalled pam available, but I'm unable to find a link. Where can I download this image?
Thanks a lot,
Dennis

Some help is obscured

I have selected the help option but the top of the screen has a black bar with red writing, "No AES Detected" and a blue "Reset" button.

Generators do not feed (analogue) output

  • Configure RPi with builtin audio (dtparam=audio=on in /boot/config.txt).
  • Select builtin soundcard analogue output as Output Device
  • Select Generator (of Sequence of Noise) as Output Source
    Expected behaviour: Generator feeds analogue output.
    Actual behaviour: Analogue output is silence.

Selecting Output Source as "Input" and selecting an input does produce audio at analogue output.

Typo in log

The log has an entry: "Opene Audio Device: Soundcard". I believe this is a typo and should say, "Open Audio Device: Soundcard".

Cmake build error - winsock2.h

Building using Cmake on Raspbian throws an error:

pam/external/ptpmonkey/include/ptpstructs.h:7:10: fatal error: winsock2.h: No such file or directory
 #include "winsock2.h"

I have tried running cmake twice. Commands used:

cmake .. -DoptionPTP=ON
cmake --build .

Builtin analogue audio low level

Enabling builtin analogue audio (dtparam=audio=on in /boot/config.txt) results in low level audio at analogue output. This can be corrected with ALSA mixer.

GUI activity mutes output

Some GUI activity mutes the output, e.g. go to Help and scroll the list of topics whilst listening to a stereo input via builtin analogue output. It may be that the long press to activate drag may be upsetting the audio thread??? Next drag seems to clear the mute state. During mute the "No AES Detected" message shows. It may also self clear (unmute) after a few seconds.

PAM crashes - 8 channel AoIP

Select 8 channel AoIP source.
Select a different source.
PAM crashes.
Any further attempt to select another source will crash PAM, even after restart. Deleting the currently selected 8 channel source and selecting another source initially crashes the PAM but subsequent attempt succeeds.
AoIP discovery also sometimes leads to crash which may be related.

"Reset" button obscures other screen content

There is a blue "Reset" button that is often at the top right-centre of the screen but inexplicably occasionally at the bottom of the screen. The button obscures some content, e.g. Lissajou screen has some text that seems to sit below the button ("Auto ...x inf"). Maybe this is because there is no AES input. Note that even when Audio Monitoring Source is Disabled, this message appears on screen.

Trouble cloning repo on Mac OS

Hi,

I have just been taking a look at PAM and thought I would try cloning the git repository.

It had a problem checking out because by default Mac have case-insensitive filesystem and cannot have both a file called Pam.html and pam.html in the same directory.

Would this be an easy thing to change?

Thanks,

nick.

warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'documents/help/Pam.html'
  'documents/help/pam.html'

Could not find correct symbols

I have followed the cmake build instructions from README but when I run the resulting compiled binary I see errors and it does not get beyond a splash screen.
Extract from output:

...
GetInputDevice: Done
PTPMonkey listening on interface eth0 for domain 0
Executable Path = /root/pam/bin
Core Lib Path = /usr/local/lib/pam2
Plugin Monitor Path = /usr/local/lib/pam2/monitor
Plugin Test Path = /usr/local/lib/pam2/test
Documents Path = /root/pam
Logs Path = /root/pam/logs
Wav Files Path = /root/pam/wav
Temp Path = /tmp
Monitor Lib Directory: /usr/local/lib/pam2/monitor
Lib : spectogram
Lib : aoipinfo
Lib : radar
Lib : peakcount
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/libpeakcount.so
Lib : r128
Lib : LTCGenerator
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/libLTCGenerator.so
Lib : anglemeters
Lib : polarscope
Lib : waveform
Lib : meters
Lib : LTC
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/libLTC.so
Lib : peaklog
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/libpeaklog.so
Lib : fft
Lib : scope
Lib : identify
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/libidentify.so
Lib : lissajou
Lib : record
Could not find correct symbols in lib /usr/local/lib/pam2/monitor/librecord.so
Output source is input
Create Audio Destination Device: Soundcard
Open Audio Device: Soundcard
Pi build currently does not support duplex streams
Open Audio Device: Soundcard
Pi build currently does not support duplex streams
Session Changed: 1

This is preceded by alsa messages which I don't think are relevant to this issue and will be reported separately if necessary.

cmake rule fails - wxPtp

Building using cmake ad described in README fails with error:

/pam/plugins/aoip info/pnlAoIPInfo.cpp:900:16: error: ‘wxPtp’ has not been declared
     timeval tv(wxPtp::Get().GetLastPtpOffset(0));

Unexpected ALSA messages during startup

After building application with cmake and running on an Xorg server I see the following messages repeated several times:

Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
Expression 'alsa_snd_pcm_hw_params_set_period_size_near( pcm, hwParams, &alsaPeriodFrames, &dir )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 924
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline

This is odd output one would not expect to see.

Feature request: Display AES67 streams in non-alphabetical order

It is now possible to import AES67 stream configuration from USB. It would be advantageous to be able to define the order of display from the order within the file. It seems that the current implementation orders alphabetically. It may be further advantageous to offer switch between configured / discovered order and alphabetic order.

Too easy to drop to terminal

There is a button to show the terminal Once this is pressed there is no way back to the GUI without plugging in a keyboard or removing power. There are other functions that require a push and hold. I suggest the terminal access should be similarly protected.

NTP/PTP

Add a settings page to setup NTP/PTP on the PAM

Trying to run on Raspberry Pi: Segmentation fault

Hi,

I recently got a Official Raspberry Pi Touch screen, in order to try and give PAM a go. My goal is to get it working with AES67 and a Glensound AoIP44.

I followed the instructions in the Readme and this wiki page: https://github.com/martim01/pam/wiki/Turning-a-Raspberry-Pi-into-a-PAM

But have experienced a few problems.

Setting Up

I started with a fresh copy of Raspbian: 2019-07-10-raspbian-buster.img

When starting PAM there were some error messages about bluealsa. Given that I have no plans for using Bluetooth, I decided to uninstall it, which made the error messages go away.

apt remove --purge bluez pi-bluetooth bluealsa

I also disabled the Rapberry Pi's built-in audio in preference for a USB Audio card by editing /boot/config.txt:

dtparam=audio=off

I also had an error message about not being able to find a device. I noticed that eth0 didn't exist, so turned off predictable network interface names:

sudo raspi-config
Select "2. Network options"
Select "N3 Network interface names"
Select "No". It's now disabled predictable network interface names.
Click "OK" and "Finish". Then it will reboot your raspberry pi.

I also had a message that was implying that I need to type in a password for sudo. To keep things simple I decided to add the following line to /etc/sudoers, instead of the multiple lines for /sbin/shutdown etc...

pam ALL=(ALL) NOPASSWD:ALL

Current state

Finally I was left with the following messages after running /usr/bin/pam2

ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
SIOCADDRT: File exists
Segmentation fault
  • I assume that ALSA error messages are harmless?
  • Is the SIOCADDRT message expected?

I order to work out what is causing the Segmentation fault, I used gdb and it looks like it is a problem with calling SetBackgroundColour:

Thread 1 "pam2" received signal SIGSEGV, Segmentation fault.
0x76437e7c in uiRect::SetBackgroundColour(wxColour const&, wxColour const&) () from /home/njh/pam/pam2/../lib/libpambase.so
(gdb) bt
#0  0x76437e7c in uiRect::SetBackgroundColour(wxColour const&, wxColour const&) () from /home/njh/pam/pam2/../lib/libpambase.so
#1  0x76469664 in wmSlider::SetButtonColour(wxColour const&) () from /home/njh/pam/pam2/../lib/libpambase.so
#2  0x0016e188 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

I would be very grateful if you had any suggestions on how to fix this, or amend my setup.

Thanks!

nick.

cmake rule fails - openssl error

Building using cmake instructions in README fails with error:

fatal error: openssl/evp.h: No such file or directory
 #include <openssl/evp.h>

This can be resolved by adding libssl-dev to the list of packages to install.

Unresponsive interface even after reboot

The device can get into a state where the GUI is unresponsive to touch. This may be related to issue #22. When in this state a reboot returns to same, unresponsive state. The example I saw was the Meter Screen shown. This was fixed by removing network cable.

It may be advantageous to provide a mechanism for starting up in a known working (default) state, e.g. pressing a GUI button during startup.

Wrong monitor selection from "Angle Meters" screen

  • Select AES67 source with 8 channels
  • Select "Angle Meters" screen
  • Press each "Monitor" button
    Expected behaviour: Each stereo pair (0+1, 2+3, 4+5, 6+7) is routed to output and Monitor button is selected.
    Actual behaviour: Source from different stereo pair selected, e.g 1+2. Monitor button selection erratic.

Lissajou deter display corrupt

After clicking around for a while, the stereo bar meters on the right of the Lissajou display is corrupt. The space between the top of the meters and top of screen / grey bars is populated with random video content. This may be horizontal coloured lines or different colour pixels. It is like the space is being rendered from undefined / uninitiated / random data.

I haven't figured out what workflow triggers this but it occurs fairly often. Probably some failure to clear the screen data before drawing the screen.

Display locks up (when switching meter)

On several occasion the GUI has locked up and become unresponsive. On most recent occasion this was when switching Screens from FFT to R128. Switching to terminal I can see that pam2 process is taking 123% CPU. Killing pam2 process does not relaunch PAM GUI. (Killing lightdm restarts UI with login prompt.)

After reboot I was able to reproduce the issue. Selecting R128 (from any Screen) seems to lock up the display (if AES67 source selected).

NO AES message obscures AES67 source selection page buttons

  • Select an AES67 source which has no present data or is invalid
  • Press the "AoIP" label at bottom right of menu buttons
    AES67 Source selection shows but the "No AES Detected" message and "Reset" button obscures the page buttons at bottom of screen.

Good job Dear

Dear @martim01

I 'd like to say : Very good job for this project.

Don't stop ;-)

Remarks : do you think the same dev in Typescript is possible or limited because all the library are C++ ?

Best Regards,
Youssef

wxWidgets with vs code?

Dear @martim01

I am using vs code on mac and Windows, did you tried one of them or still using as recommenced in the repository?

Best regards
Youssef

USB flash sometimes not mounting

Occasionally the PAM does not recognise a USB memory device. Sometimes it displays multiple copies of files, like it may have mounted the device twice.

It is plausible that automount is running and mounting the media and PAM is manually mounting it. It may be that if one does so before the other it may block the second mount and it may be that if the mount occurs in opposite order then the device may get mounted twice.

Wifi Connection

Need to add a way to connect to wifi from the application

soundcard

Is there a solution to use the onboard audio out (mini-jack) in place of a specific pi-Hat?(or maybe also an usb sound card)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.