Android Example Create wave form

Discussion in 'Tutorials & Examples' started by megzz, Nov 17, 2017.

  1. megzz

    megzz Member Licensed User

    You can generate waveform from peaks json file which is generated from mp3 file.
    In this source waveforms has drown with canvas.
    You can customize everything about waveforms display with this source.

    Screenshot_20171117-143611.jpg


    Code:
    #Region  Project Attributes
        
    #ApplicationLabel: B4A Example
        
    #VersionCode: 900
        
    #VersionName:
        
    'SupportedOrientations possible values: unspecified, landscape or portrait.
        #SupportedOrientations: unspecified
        
    #CanInstallToExternalStorage: False
    #End Region

    #Region  Activity Attributes
        
    #FullScreen: False
        
    #IncludeTitle: False
    #End Region

    Sub Process_Globals
        
    'These global variables will be declared once when the application starts.
        'These variables can be accessed from all modules.

    End Sub

    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.
        Private x As Float
        
    Dim Drawlinewave As Canvas
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
        
    'Do not forget to load the layout file created with the visual designer. For example:
       
        
    Dim Steper As Float
        
    Dim pointer,counter,tedad As Float
        
    Dim avrg ,avergcount As Int
        pointer = 
    0
        counter = 
    0
        Drawlinewave.Initialize(
    Activity)
        x=
    0
        
    Log("Downloaded")
        
    Dim json As String
       
        json = 
    File.ReadString(File.DirAssets,"S243_1099_sJRDZFN4.js")
       
        
    Dim parser As JSONParser
        parser.Initialize(json)
        
    Dim root As Map = parser.NextObject
        
    Dim waves As List = root.Get("peaks")

               
        
    Log("Screen: " & 100%x)
        
    Log("waves count: " & waves.Size )
        Steper = 
    Round( waves.Size / 100%x)
           
        Steper = Steper * 
    8
        tedad =
    100%x / (waves.Size  / Steper)
        
    Log("tedad: " & tedad )
        
    Log("Steper: " & Steper )
        avergcount = Steper/
    10
        
    For i=0 To waves.Size-1 Step Steper
            avrg = 
    0
            
    For r = 0 To avergcount
                avrg = avrg + waves.Get(i+r)
            
    Next
            avrg = avrg / avergcount
            drawwave(avrg,tedad)
        
    Next
       
    End Sub
         

    Sub Activity_Resume

    End Sub

    Sub Activity_Pause (UserClosed As Boolean)

    End Sub


    Sub Button1_Click
       
    End Sub
    Sub Jobdone(Job As HttpJob)
    End Sub

    Sub drawwave(value    As Int,tedad As Float)
        value = value-
    20
        
    If value>180 Then value=value - 30
        Drawlinewave.DrawLine(x,
    70dip,x,140dip-(value),Colors.White,2dip)
        
    'Drawlinewave.DrawLine(x,300,x,200+value,Colors.Yellow,1dip)
        x=x+ tedad
    End Sub

    you can custom to ratio and Number wave in line with number 10 and 8

    Code:
    Steper = Steper * 8
        tedad =
    100%x / (waves.Size  / Steper)
        
    Log("tedad: " & tedad )
        
    Log("Steper: " & Steper )
        avergcount = Steper/
    10
     

    Attached Files:

    Almora, Levit, Erel and 10 others like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice