Visualizer로 spotify 곡을 보여줍니다.

12125 단어 cavaSoundFlowerSpotify

개시하다


전 원격근무 중 곡을 들으며 일하는 경우가 늘었다.
Visualizer로 spotify가 틀어주는 곡을 보여주면 재미있을 것 같아서요.
전제로 스팟ify의 고급 회원이어야 한다.
결국spotify로 노래를 틀면 이런 느낌으로 터미널에 방문자를 표시한다.

사용할 라이브러리


spotifyd


자신의 컴퓨터를 spotify connect할 수 있도록 하다
spotifyd를 사용하지 않고 사운드플라워와 카바만 사용해도 괜찮습니다.Soundflower와 카바가 있으면 맥의 소리 출력을 카바에게 전달할 수 있기 때문에 맥으로 어떤 소리(유튜브일 수도 있음)를 내면 터미널에서 바쁘게 맞출 수 있다.

Soundflower


가상 오디오 IF

cava


종착역에서 바쁘게 소리를 낼 수 있어요.

작업흐름

  • PC에 spotifyd를 설치하고 시작합니다.(이렇게 하면 PC는 spotify connect를 진행할 수 있다)
  • Soundflower를 설치하고 Soundflower를 맥의 소리 출력에 추가
  • 카바를 설치합니다.Soundflower를 입력으로 받도록 설정합니다.
  • 스마트폰의 스팟ify 앱을 통해 자신의 컴퓨터를 스팟ify connect하여 노래를 재생한다.(스마트폰과 PC가 같은 와이파이에 연결됨)
  • PC의 터미널을 켜서cava를 시작합니다.
  • spotifyd


    설치하다.


    spotifyd의 설치는 여기서부터. 2진법 설치를 낮추는 것이다.
    각 플랫폼을 대상으로 기능을 제한한ver와 전기능ver 등이 많은데 이번에는 맥을 위한 전 버전(spotifyd-macos-full.tar.gz)을 사용했다.
    다음은 다운로드한 파일이 떨어진 상태에서 시작하는 작업 절차입니다.
    
    $ sudo cp Downloads/spotifyd /usr/local/bin
    $
    $ brew install dbus pkg-config portaudio # readmeに書いているが、dbus, pkg-config, portaudioが必要
    $ /usr/local/bin/spotifyd --help         # 実行できた
    spotifyd 0.2.24
    Simon Persson <[email protected]>, Sven Lechner <[email protected]>
    A Spotify daemon
    
    USAGE:
        spotifyd [FLAGS] [OPTIONS]
    :
    :
    

    설정


    readme도 이런 느낌의 conf를 준비한다고 적혀 있다.
    spotifyd.conf
    [global]
    # Your Spotify account name.
    username = <spotifyのユーザー名>
    
    # Your Spotify account password.
    password = <spotifyのパスワード>
    
    # A command that gets executed and can be used to
    # retrieve your password.
    # The command should return the password on stdout.
    #
    # This is an alternative to the `password` field. Both
    # can't be used simultaneously.
    # password_cmd = command_that_writes_password_to_stdout
    
    # If set to true, `spotifyd` tries to look up your
    # password in the system's password storage.
    #
    # This is an alternative to the `password` field. Both
    # can't be used simultaneously.
    # use_keyring = true
    
    # The audio backend used to play the your music. To get
    # a list of possible backends, run `spotifyd --help`.
    backend = portaudio
    
    # The alsa audio device to stream audio to. To get a
    # list of valid devices, run `aplay -L`,
    # device = alsa_audio_device  # omit for macOS
    
    # The alsa control device. By default this is the same
    # name as the `device` field.
    # control = alsa_audio_device  # omit for macOS
    
    # The alsa mixer used by `spotifyd`.
    mixer = PCM
    
    # The volume controller. Each one behaves different to
    # volume increases. For possible values, run
    # `spotifyd --help`.
    volume_controller = alsa  # use softvol for macOS
    
    # A command that gets executed in your shell after each song changes.
    # on_song_change_hook = command_to_run_on_playback_events
    
    # The name that gets displayed under the connect tab on
    # official clients. Spaces are not allowed!
    device_name = pokotyan-macbook
    
    # The audio bitrate. 96, 160 or 320 kbit/s
    bitrate = 320
    
    # The director used to cache audio data. This setting can save
    # a lot of bandwidth when activated, as it will avoid re-downloading
    # audio files when replaying them.
    #
    # Note: The file path does not get expanded. Environment variables and
    # shell placeholders like $HOME or ~ don't work!
    cache_path = cache_directory
    
    # If set to true, audio data does NOT get cached.
    # no_audio_cache = true
    
    # If set to true, enables volume normalisation between songs.
    volume_normalisation = true
    
    # The normalisation pregain that is applied for each song.
    normalisation_pregain = -10
    
    # The port `spotifyd` uses to announce its service over the network.
    zeroconf_port = 1234
    
    # The proxy `spotifyd` will use to connect to spotify.
    # proxy = http://proxy.example.org:8080
    
    # The displayed device type in Spotify clients.
    # Can be unknown, computer, tablet, smartphone, speaker, tv,
    # avr (Audio/Video Receiver), stb (Set-Top Box), and audiodongle.
    device_type = speaker
    
  • device_name
    spotify connect를 만들 때 터미널의 디스플레이 이름을 지정할 수 있습니다.
  • backend
    이번에는 맥으로 이동하기 때문에 백엔드가 포트오디오를 지정합니다.플랫폼마다 지정할 수 있는 백엔드가 다르기 때문에spotifyd-help를 통해 어느 값이 유효한지 확인할 수 있습니다.

  • 제작된 conf를 아래 임의로 설정하면spotifyd가 자동으로 불러옵니다
    ~/.config/spotifyd
    /etc
    /etc/xdg/spotifyd
    
    $ cp spotifyd.conf /etc
    

    부팅


    spotifyd를 시작합니다.
    $ spotifyd --no-daemon
    Loading config from "/etc/spotifyd.conf"
    No proxy specified
    Using software volume controller.
    Failed to register IPv6 receiver: Os { code: 49, kind: AddrNotAvailable, message: "Can\'t assign requested address" }
    Connecting to AP "gae2-accesspoint-b-tpjk.ap.spotify.com:443"
    Authenticated as "dfp0082708o85pndjel2s3caj" !
    Country: "JP"
    
    이 정도면 스마트폰의spotify 앱을 통해 자신의 컴퓨터spotify connect를 실현할 수 있다.

    푹 빠진 곳


    최신release의spotifyd를 빼면 마코스10입니다.15용 프로그램이라 부팅이 안돼요.
    마코스를 10.15로 주고 제대로 움직였어요.
    $ spotifyd --no-daemon
    Loading config from "/etc/spotifyd.conf"
    No proxy specified
    Using software volume controller.
    error sending packet Os { code: 65, kind: Other, message: "No route to host" }
    Connecting to AP "gae2-accesspoint-b-wwhc.ap.spotify.com:443"
    Authenticated as "dfp0082708o85pndjel2s3caj" !
    Country: "JP"
    
    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))
    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))
    Loading <裸の心> with Spotify URI <spotify:track:11OHUXwYHjsRNysUDdO2JS>
    dyld: lazy symbol binding failed: Symbol not found: ____chkstk_darwin
      Referenced from: /usr/local/bin/spotifyd (which was built for Mac OS X 10.15)
      Expected in: /usr/lib/libSystem.B.dylib
    
    dyld: Symbol not found: ____chkstk_darwin
      Referenced from: /usr/local/bin/spotifyd (which was built for Mac OS X 10.15)
      Expected in: /usr/lib/libSystem.B.dylib
    
    Abort trap: 6
    $
    
    

    Soundflower


    설치하다.


    설치 프로그램에서 설치합니다.다음은 참조입니다.
    https://hi3103.net/notes/mac/1214
    설치가 완료되면 맥의 소리를 출력해서 Soundflower를 선택할 수 있습니다.

    설정


    소리를'맥의 내장 스피커'와'Soudflower'두 방면으로 출력한다.
    mac를 여는 프로그램 = > 유틸리티 = > Audio MIDI 설정.
    왼쪽 아래 + 를 눌러 다중 출력 기기 생성

    내장 출력 및 SoundFlower(2ch) 선택

    작성된 다중 출력 기기 사용

    cava


    설치하다.


    기본적으로readme에 적힌 대로 하면 됩니다.
    (libtoolize 같은 건 readme대로 해도 안 돼)
    $ brew install fftw ncurses libtool automake portaudio
    $ ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
    $ git clone [email protected]:karlstav/cava.git
    $ cd cava/
    $ ./autogen.sh
    $ ./configure
    $ make
    $ make install
    

    푹 빠진 곳


    autom4te: need GNU m4 1.4 or later: /usr/bin/m4


    ./autogen.sh를 실행할 때 상기 오류가 발생합니다.m4가 제대로 작동하지 않음
    
    $ m4 --version
    dyld: Symbol not found: _OBJC_IVAR_$_NSFont._fFlags
      Referenced from: /Applications/Xcode.app/Contents/SharedFrameworks/DVTDocumentation.framework/Versions/A/../../../../SharedFrameworks/DVTKit.framework/Versions/A/DVTKit
      Expected in: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
     in /Applications/Xcode.app/Contents/SharedFrameworks/DVTDocumentation.framework/Versions/A/../../../../SharedFrameworks/DVTKit.framework/Versions/A/DVTKit
    m4: error: unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly!
    m4: error: You can set the path to the Xcode folder using /usr/bin/xcode-select -switch
    $
    
    xcode를 업데이트해 보니 잘 움직일 수 있게 됐어요.
    $ m4 --version
    GNU M4 1.4.6
    Copyright (C) 2006 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    Written by Rene' Seindal.
    $
    

    ./autogen.sh: line 9: libtoolize: command not found


    ./autogen.sh를 실행할 때 상기 오류가 발생합니다.
    mac에서libtoolize는globtoolize 명령인 것 같습니다.
    https://qiita.com/udzura/items/3c656bbe3056e2b9ebd0
    https://stackoverrun.com/ja/q/4191479
    그래서 나는 기호 링크를 붙였다.
    $ ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
    

    설정


    ./autogen.sh를 실행하면 다음에cava 설정 파일을 만듭니다.~/.config/cava/configreadme에도 쓰여 있으며 input의 설정 부분은 다음과 같이 수정됩니다
    method = portaudio
    source = "Soundflower (2ch)"
    
    이렇게 되면 카바는 사운드플라워(2ch)로 향하는 소리 출력을 포착할 수 있다.
    또한 기본적으로 각 설정은 모두 주석으로 아웃됩니다.
    input의 설정은 상술한 내용을 사용했고 다른 모든 곳의 논평은 취소되었다.

    부팅


    카바가 맥의 단말기에서 이동합니다.(처음에는 iTerm에서 움직였지만 움직이지 않고 약간 반했다.)
    $ cava
    

    숙제 끝!


    이 정도면 종착역에서 스팟ify 곡을 들으느라 바쁠 수도 있다.
    뭐가 바빠서?이렇게 말하면 그만이지, 즐거우면 해봐

    좋은 웹페이지 즐겨찾기